我有以下的jQuery的崗位到ASP.NET的webmethod 405錯誤(HTTP動詞POST不允許):jQuery的AJAX後接收
$.ajax({
type: "POST",
url: "AjaxWebMethods.aspx/UpdNote",
contentType: "application/json; charset=utf-8",
data: "{'ID' : '" + id + "', 'note' : '" + note + "' }",
dataType: "json",
success: UpdNote_Success,
error: AjaxError
});
和Web方法聲明:
[System.Web.Services.WebMethod(enableSession: true)]
public static int UpdNote(int ID, string note) {
// business logic that eventually returns a number, but simplifying
// ... for the sake of brevity
int retNum = 99;
return retNum;
}
jQuery post和web方法在Windows Authenticated環境中都很好用(即 - 用戶通過LDAP進行身份驗證)。但是,最近我不得不將網站移動到使用RSA(雙因素身份驗證,PIN和令牌代碼)的服務器來驗證用戶身份,以便訪問網站。而我現在看到的是,我所有的jQuery帖子都返回「405錯誤」。
很明顯,跨網站的請求浮現在腦海中,但是沒有一件事情在這裏發生。所有jQuery AJAX帖子都使用在AjaxWebMethods.aspx中聲明的Web方法,該頁面駐留在站點自己的域中。
在此先感謝您的任何幫助或建議!
編輯:
在IE8中使用招給我多一點的信息。它返回的錯誤代碼仍然是405,但服務器錯誤更具描述性。服務器錯誤是「HTTP動詞POST用於訪問路徑'/AjaxWebMethods.aspx/UpdNote'是不允許的。」
我嘗試將ajax請求的類型參數更改爲GET,但我得到一個404代替(無法找到該資源)。
此外,忘了提及這是通過SSL(雖然我不認爲這會有所作爲)。
編輯:
,該網站正在使用,並且更具體地廣泛的測試(和廣泛的幫助從計算器的精明成員)我們已確定405錯誤,直接關係到應用程序池後爲應用程序池選擇的管理管道模式。
如果我使用面向v4.0(.NET Framework)和集成(管理流水線模式)的應用程序池,那麼我的AJAX文章工作得很好。但是,如果我使用面向v4.0和Classic(管理流水線模式)的應用程序池,那麼我會得到405錯誤。
所以在這一點上,我仍然在尋找一個解決這個問題的方法,儘管我已經能夠解決這個問題。
爲什麼你需要'contentType'聲明?您將'datatType'設置爲JSON,並且*「數據將始終使用UTF-8字符集傳輸到服務器;您必須在服務器端正確解碼」。*因此部分也是不必要的 - [jQuery API] (http://api.jquery.com/jQuery.ajax/) –
爲什麼你不使用完整的網址? (除非您爲了安全目的而刪除它) – gabeio