Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax调用WebMethod时出现500内部服务器错误_Javascript_C#_Ajax - Fatal编程技术网

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

Javascript 使用ajax调用WebMethod时出现500内部服务器错误,javascript,c#,ajax,Javascript,C#,Ajax,我的C#WebMethod在代码隐藏方面遇到问题,导致500个内部服务器错误。我真的不明白为什么它不会击中它,所以如果有人能告诉我是什么问题,那就太好了 因此,这是我的ajax调用,即使数据和数据类型没有注释掉,也不起作用 $('#chkBxAutoCost') .click(function(e) { $.ajax({ type: "POST", url: "BatchReportCriter

我的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上附加了一个断点,它没有被击中。我被卡住了,如果有人有任何见解,我将不胜感激。

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

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

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

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

因此,正如botond在评论中所说,我的问题是webmethods需要是静态的!非常感谢,这真的伤了我的头

首先要编辑
RouteConfig.cs
并使用

settings.AutoRedirectMode = RedirectMode.Off;
接下来编辑
GetAutoJsonBatches()
static

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

默认情况下HTTP是无状态的,ASP.Net在 在标准页面中显示ViewState、会话等的背景 请求使开发人员的生活更轻松


可能重复尝试使您的方法成为静态的
:非常感谢。让它静止,固定它。但我无法接受这里的回答!如果你在我的下面加一个答案,我会接受的!:)
[WebMethod]
public static string GetAutoJsonBatches()
{
    return autoJsonBatches;
}