我希望有人可以解释为什么我在尝试使用JQuery ajax方法调用ASP.Net VB.Net WebMethod时可能会收到405错误。
服务器实施:
<WebMethod()> _
Public Shared Function DoSomething(id As String) As String
Dim vm As HssViewModel = New HssViewModel()
Dim jResult As String = JsonConvert.SerializeObject(vm)
Return jResult
End Function
Javscript实施:
$.ajax({
type: "POST",
url: "mypage.aspx/DoSomething",
contentType: "application/json; charset-utf-8",
data: { 'id': 'ABC12345' },
dataType: "json",
cache: true,
succes: function (data) {
context = data;
console.log(data);
},
error: function (err) {
console.log("JQUERY ERROR RESPONSE: " + err.message);
}
});
我一直收到以下错误消息:
POST http://localhost/mypage.aspx/DoSomething 405 (Method Not Allowed)
我还尝试设置脚本方法标记以允许GET请求,但之后我收到了404
<ScriptMethod(UseHttpGet:=True, ResponseFormat:=ResponseFormat.Json)> _
答案 0 :(得分:1)
您的WebMethod期待GET请求:
<ScriptMethod(UseHttpGet:=True
但你正在做一个POST请求:
$.ajax({
type: "POST",
当请求HTTP动词(GET,PUT,POST,DELETE,HEAD等)并由指定的处理程序不支持/禁止时,IIS抛出405.
如果在更改问题上方的差异后仍然存在,请查看您的iis处理程序映射。
答案 1 :(得分:0)
尝试将以下行添加到web.config中。部署到Web服务器后我遇到此问题,但在本地调试时没有遇到此问题。这将在本节中介绍。
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>