ASP.Net WebMethod 405

时间:2013-11-20 16:37:17

标签: jquery asp.net vb.net webmethod

我希望有人可以解释为什么我在尝试使用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)> _

2 个答案:

答案 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>