我在 UAT 环境中收到此错误 “处理请求时出错”。在我当地,代码似乎运行良好。
这行 Utility.WriteLogEvent("TestService", strMessage); 直接写入数据库。不管怎样,如果这条线失败与否,我仍然应该能够收到来自服务器的消息,因为它被正确处理了。
但是由于我没有收到服务器的任何响应,这意味着我的 webmethod 无法访问。
鉴于下面的代码可以工作,我是否需要在 web.config 中设置任何内容才能使其工作?或者我可以在任何地方开始检查 IIS,这可以给我一些线索?
谢谢。
$('#lnkTest').click(function () {
alert('Click event is firing!');
$.ajax({
type: "POST",
url: "/_layouts/ServiceForm.aspx/TestService",
data: "{}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (response) {
if (response.d && response.d.length > 0) {
alert(response.d);
}
},
error: function (xhr, err) {
alert('responseText:' + xhr.responseText);
}
});
});
这是我的 C# Web 方法
[WebMethod]
public static string TestService()
{
string strMessage = string.Empty;
try
{
strMessage = "The service is running.";
Utility.WriteLogEvent("TestService", strMessage);
}
catch (Exception ex)
{
strMessage = "TestService fail.";
}
return strMessage;
}
对于其他在调用带有参数的 WebMethod 时可能遇到相同错误的人。
确保没有一个参数为空,因为这也会在没有适当原因的情况下引发相同的错误。提供解决方案以防止将空参数传递给客户端的方法。也许是
if statement
。
我已经解决了这个问题。这是由于应用程序服务器中部署了 dll,并且被安装的防病毒软件阻止了。
我的 Web 方法对于少量数据可以正常工作,但在使用参数调用相同 Web 方法以返回 500 行(大量数据)时收到相同的错误消息:
{"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}
。
对我来说这个错误的原因是我没有在服务器的 web.config 中设置
maxJsonLength
属性。
所以我将以下几行放在 web.config 的 configuration
部分下。
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
我的错误已经解决了。
从 web.config 文件中删除上述
maxJsonLength
属性后,我在本地运行该方法并收到以下错误。
{
"Message": "Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.",
"StackTrace": " at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output, SerializationFormat serializationFormat)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, SerializationFormat serializationFormat)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)",
"ExceptionType": "System.InvalidOperationException"
}
因此,如果您遇到此错误,请按照上述方式在 web.config 文件中设置
maxJsonLength
属性。