ASP.NET: jQuery AJAX를 사용하는 WebMethod가 "401 Unauthorized" 오류를 반환합니다
ASP.NET WebForm에서 WebMethod를 호출하려고 하면 jQuery AJAX를 사용하면 "401(권한 없음)" 오류가 발생할 수 있습니다. 이 문제는 web.config 파일의 인증 설정으로 인해 발생합니다.
WebMethod는 다음과 같이 구성됩니다.
[WebMethod] public static string GetClients(string searchTerm, int pageIndex) { // ... return GetData(cmd, pageIndex).GetXml(); }
그리고 jQuery AJAX 호출은 다음에서 이루어집니다.
function GetClients(pageIndex) { $.ajax({ type: "POST", url: "ConsultaPedidos.aspx/GetClients", contentType: "application/json; charset=utf-8", dataType: "json", // ... }); }
그러나 web.config 파일에서 사용자 인증을 활성화한 후:
<authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="/Dashboard" /> </authentication> <authorization> <deny users="?" /> </authorization>
앞서 언급한 오류로 인해 AJAX 호출이 실패합니다.
해결 방법:
이 문제를 해결하려면 두 가지 수정이 필요합니다.
ASP.NET 자동 이름 비활성화 리디렉션:
다음을 변경합니다. 줄:
settings.AutoRedirectMode = RedirectMode.Permanent;
대상:
settings.AutoRedirectMode = RedirectMode.Off;
친숙한 URL 경로 수정:
친숙한 URL을 지원하는 웹사이트의 경우 jQuery AJAX 호출은 다음과 같아야 합니다. 수정됨:
변경:
url: "ConsultaPedidos.aspx/GetClients"
받는 사람:
url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>'
이러한 조정은 jQuery AJAX 호출을 사용하면 "401 Unauthorized" 오류를 발생시키지 않고 WebMethod에 액세스할 수 있습니다.
위 내용은 ASP.NET WebMethod에 대한 jQuery AJAX 호출이 '401 Unauthorized' 오류를 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!