使用ajax调用WebMethod时出现500内部服务器错误

时间:2016-12-01 18:43:53

标签: javascript c# ajax

我遇到了一个问题,就后面的代码问了我的C#WebMethod并且出现了500内部服务器错误。我真的不明白为什么它不会打它所以如果有人能告诉我这是什么问题会非常棒。

http://github.com/woo-j/OkapiBarcode

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

if(WIN32)
    if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
        set(CMAKE_INSTALL_PREFIX " C:\Program Files" CACHE PATH "..." FORCE)
    endif()
endif()

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

$('#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上附加了一个断点,它没有被击中。我很困惑,所以如果有人有任何见解,我会非常感激。

3 个答案:

答案 0 :(得分:1)

因为botond在评论中说我的问题是web方法需要是静态的!非常感谢真的破坏了我的头脑!

答案 1 :(得分:1)

首先,您需要修改RouteConfig.cs并使用

settings.AutoRedirectMode = RedirectMode.Off;

接下来将您的GetAutoJsonBatches()修改为static

  

他们是静态的,因为他们完全是无国籍的,他们不会创建你的网页课程的实例,也没有任何内容传递给他们   在请求中(即ViewState和表单字段值)。

     

默认情况下,HTTP是无状态的,ASP.Net做了很多东西   标准页面中使用ViewState,Session等的背景   要求让开发人员更轻松。

Source

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

答案 2 :(得分:0)

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

[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{

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

您还没有向我们提供异常消息的确切内容。