ASP.NET: WebMethod dengan jQuery AJAX Mengembalikan Ralat "401 Tanpa Kebenaran"
Apabila cuba memanggil WebMethod dalam ASP.NET WebForm menggunakan jQuery AJAX, ralat "401 (Tidak Dibenarkan)" mungkin berlaku dihadapi. Isu ini timbul disebabkan oleh tetapan pengesahan dalam fail web.config.
WebMethod dikonfigurasikan seperti berikut:
[WebMethod] public static string GetClients(string searchTerm, int pageIndex) { // ... return GetData(cmd, pageIndex).GetXml(); }
Dan panggilan jQuery AJAX dibuat daripada:
function GetClients(pageIndex) { $.ajax({ type: "POST", url: "ConsultaPedidos.aspx/GetClients", contentType: "application/json; charset=utf-8", dataType: "json", // ... }); }
Walau bagaimanapun, selepas mendayakan pengesahan pengguna dalam web.config fail:
<authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="/Dashboard" /> </authentication> <authorization> <deny users="?" /> </authorization>
Panggilan AJAX gagal dengan ralat yang dinyatakan di atas.
Penyelesaian:
Untuk menyelesaikan isu ini, dua pengubahsuaian diperlukan:
Lumpuhkan Nama Auto ASP.NET Ubah hala:
Tukar yang berikut talian:
settings.AutoRedirectMode = RedirectMode.Permanent;
kepada:
settings.AutoRedirectMode = RedirectMode.Off;
Betulkan Laluan URL Mesra:
Untuk tapak web yang mendayakan URL mesra, URL dalam panggilan AJAX jQuery mestilah diubah suai:
Tukar:
url: "ConsultaPedidos.aspx/GetClients"
Kepada:
url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>'
Pelarasan ini akan membolehkan panggilan jQuery AJAX mengakses WebMethod tanpa mencetuskan ralat "401 Unauthorized".
Atas ialah kandungan terperinci Mengapa jQuery AJAX Saya Memanggil ke ASP.NET WebMethod Menghasilkan Ralat '401 Tanpa Kebenaran'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!