【问题标题】:Getting 500 Internal Server Error when calling a WebMethod using ajax使用 ajax 调用 WebMethod 时出现 500 内部服务器错误
【发布时间】:2017-04-16 12:49:28
【问题描述】:

我在使用 C# WebMethod 后面的代码时遇到问题,并出现 500 内部服务器错误。我真的不明白为什么它不会击中它,所以如果有人能告诉我问题出在哪里,那就太好了。

所以这是我的 ajax 调用,即使数据和数据类型没有被注释掉也不起作用。

$('#chkBxAutoCost')
    .click(function(e) {
            $.ajax({
                type: "POST",
                url:   "BatchReportCriteriaSelection.aspx/GetAutoJsonBatches",
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                data: "{}",
                error: function(XMLHttpRequest, textStatus,    errorThrown) {
                    console.log("Request: " +
                        XMLHttpRequest.toString() +
                        "\n\nStatus: " +
                        textStatus +
                        "\n\nError: " +
                        errorThrown);
                },
                success: function() { console.log("success") }
            });
        }
    );

这是我在页面方法背后的代码:

[WebMethod]
public string GetAutoJsonBatches()
{
    return autoJsonBatches;
}

所以我在这个 WebMethod 上附加了一个断点,它没有被命中。我很困惑,所以如果有人有任何见解,我将不胜感激。

【问题讨论】:

标签: javascript c# ajax


【解决方案1】:

首先你编辑RouteConfig.cs并使用

settings.AutoRedirectMode = RedirectMode.Off;

接下来将您的GetAutoJsonBatches() 编辑为static

它们是静态的,因为它们完全是无状态的,它们不会创建页面类的实例,也不会向它们传递任何内容 在请求中(即 ViewState 和表单字段值)。

HTTP 默认是无状态的,ASP.Net 在 在标准页面期间带有 ViewState、Session 等的背景 请求让开发者的生活更轻松。

Source

[WebMethod]
public static string GetAutoJsonBatches()
{
    return autoJsonBatches;
}

【讨论】:

    【解决方案2】:

    正如 botond 在 cmets 中所说,我的问题是 webmethods 需要是静态的!非常感谢真的让我头疼!

    【讨论】:

      【解决方案3】:

      要允许使用 ASP.NET AJAX 从脚本调用此 Web 服务,您需要为您的 WebService 使用 [System.Web.Script.Services.ScriptService] 属性。

      [System.Web.Script.Services.ScriptService]
      public class WebService1 : System.Web.Services.WebService
      {
      
          [WebMethod]
          public string GetAutoJsonBatches()
          {
              return autoJsonBatches;
          }
      }
      

      而且您还没有向我们提供异常消息的确切含义。

      【讨论】:

        猜你喜欢
        • 2015-07-12
        • 1970-01-01
        • 1970-01-01
        • 2020-02-06
        • 1970-01-01
        • 2012-01-08
        • 1970-01-01
        • 2012-08-14
        • 2015-07-05
        相关资源
        最近更新 更多