ASP.NET: jQuery AJAX を使用した WebMethod が「401 Unauthorized」エラーを返す
ASP.NET WebForm で WebMethod を呼び出そうとするとjQuery AJAX を使用すると、「401 (Unauthorized)」エラーが発生する場合があります。この問題は、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 呼び出しが前述のエラーで失敗します。
解決策:
この問題を解決するには、2 つの変更が必要です:
ASP.NET 自動名を無効にするリダイレクト:
次のように変更します行:
settings.AutoRedirectMode = RedirectMode.Permanent;
へ:
settings.AutoRedirectMode = RedirectMode.Off;
フレンドリー URL パスを修正:
フレンドリー URL を有効にする Web サイトの場合、URL jQuery では AJAX 呼び出しは次のようにする必要があります変更済み:
変更:
url: "ConsultaPedidos.aspx/GetClients"
次:
url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>'
これらの調整により、 「401 Unauthorized」エラーを引き起こさずに WebMethod にアクセスするための jQuery AJAX 呼び出し。
以上がASP.NET WebMethod への jQuery AJAX 呼び出しで「401 Unauthorized」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。