ASP.NET 呼叫WebMethod with jQuery AJAX 出現"401 (Unauthorized)"
在ASP.NET Webform 中呼叫WebMethod 時遇到"401 (Unauthorized)" 錯誤,這是常見的問題。本文將探討導致此問題的潛在原因並提供解決方案。
解決方案
原問題中給出的解決方案是修改~/App_Start/RouteConfig.cs 文件,將以下行
settings.AutoRedirectMode = RedirectMode.Permanent;
改為
settings.AutoRedirectMode = RedirectMode.Off;
或註解掉此行。如果啟用了友善URL,還需要將以下行
url: "ConsultaPedidos.aspx/GetClients",
改為
url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>',
分析
"401 (Unhorhorized)"錯誤表示伺服器無法驗證客戶端的請求。在 ASP.NET 中,WebForms 頁面預設使用 Forms 驗證,當使用者未通過驗證時會自動重新導向到登入頁面。
~/App_Start/RouteConfig.cs 檔案中 settings.AutoRedirectMode 設定指定當要求的 URL 不存在時如何處理重新導向。預設值為 RedirectMode.Permanent,這表示將永久重新導向到登入頁面,即使用戶端已經通過驗證也無法存取原始 URL。將此設定變更為 RedirectMode.Off 或註解掉此行可停用自動重定向。
此外,如果啟用了友善 URL,則 jQuery AJAX 請求將使用客戶端相對 URL(例如 "ConsultaPedidos.aspx/GetClients")。這會導致伺服器無法解析請求,並傳回 "401 (Unauthorized)" 錯誤。使用 ResolveUrl 方法將相對 URL 轉換為絕對 URL 可以解決此問題。
以上是為什麼在使用 jQuery AJAX 呼叫 ASP.NET WebMethod 時會出現「401(未經授權)」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!