2

我的 ajax 调用突然停止工作,我不知道为什么。我没看到什么?

答:是因为ASP.NET State Server关机了。

这是我的网络方法

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Test(string message)
{
    return message;
}

这是我的ajax调用

$.ajax({
    url: '/Test.asmx/Test',
    data: {message:'hello'},
    type: "POST",
    async: true,
    contentType: "application/json; charset=UTF-8",
    dataType: "json",
    beforeSendMethod: function (xhr) {
        xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");
    },
    success:  function (data, textStatus, jqXHR) {
        console.log('success!',data, textStatus, jqXHR);
    },
    error: function (data, textStatus, jqXHR) {
        console.log('error!',data, textStatus, jqXHR);
    }
});

这是我的错误

Message:    Invalid web service call, missing value for parameter: 'message'.

StackTrace:   at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)
   at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)
   at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)
   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)

ExceptionType: System.InvalidOperationException

如果我这样做,它会起作用:

$.ajax({
    url: '/Services/Authentication.asmx/Test',
    data: {message:'hello'},
    type: "POST",
    success:  function (data, textStatus, jqXHR) {
        console.log('success!',data, textStatus, jqXHR);
    },
    error: function (data, textStatus, jqXHR) {
        console.log('error!',data, textStatus, jqXHR);
    }
});

除了 WebMethod 返回 XML 而不是 JSON:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">hello</string>

标头

在此处输入图像描述

4

2 回答 2

2

有史以来最愚蠢的错误。ASP.NET State Service关机了,开机忘记设置自动启动了。重新启动我的计算机并忘记我正在使用它。Visual Studio 没有抛出任何异常。看起来我在调用 WebMethod 是错误的。一旦我重新打开服务,一切正常。

于 2013-11-12T17:37:10.703 回答
0

沃尔特,我使用相同的方法论方法。但是,我注意到您的标题与我在成功通话中看到的标题之间存在差异:

我成功的请求负载

在此处输入图像描述

您失败的请求有效负载

在此处输入图像描述

您的有效负载看起来不像是一个对象,而只是一个字符串。

于 2013-11-12T16:03:07.070 回答