【问题标题】:ASP.Net WebMethod 405ASP.Net 网络方法 405
【发布时间】:2013-11-20 16:37:16
【问题描述】:

我希望有人能解释为什么我在尝试从 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

JavaScript 实现:

  $.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)> _

【问题讨论】:

    标签: jquery asp.net vb.net webmethod


    【解决方案1】:

    您的 WebMethod 正在等待 GET 请求:

    <ScriptMethod(UseHttpGet:=True
    

    但您正在执行 POST 请求:

    $.ajax({
         type: "POST",
    

    当请求 HTTP 动词(GET、PUT、POST、DELETE、HEAD 等)并且指定的处理程序不支持/不允许时,IIS 会抛出 405。

    如果更改上述差异后问题仍然存在,请查看您的 iis 处理程序映射。

    【讨论】:

    • 抱歉,我尝试了 post 和 get,这是遗留代码。当我无法成功 POST 时,我实现了 ScriptMethod 属性来尝试并允许 GET 请求。
    • @tafaju 您是否尝试查看 iis andler 映射?
    • 我做了,但这是在 webdev vs2012 中运行的,配置设置什么也没做
    【解决方案2】:

    尝试将以下行添加到您的 web.config。我在部署到 Web 服务器后遇到了这个问题,但在本地调试时没有遇到。这在该部分中。

    <webServices>
      <protocols>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
      </protocols>
    </webServices>
    

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 2016-06-13
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 2018-02-04
      • 2020-07-06
      • 1970-01-01
      相关资源
      最近更新 更多