【发布时间】:2014-10-03 09:35:37
【问题描述】:
我在将复杂的 JSON 对象提交到 .NET Web 服务时遇到问题。
Ajax JavaScript 代码:
$.ajax({
type: "POST",
url: WEBSERVICE_ADMINISTRATIO_URL + "RecieveData",
data: JSON.stringify({data: _data}), // _data is the Javascipt object {}
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data);
},
failure: function (errMsg) {
alert(errMsg);
},
error: function (jqXHR, textStatus, errorThrow) {
alert(textStatus);
}
});
.NET 网络服务
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string RecieveData(string data)
{
return "";
}
我在尝试从客户端向 Web 服务提交数据时收到 Internal Server Error 500。
我还有其他只返回数据的 web 服务功能,它们工作正常。我在 web.config 中同时授予了 GET 和 POST 权限。
这是详细的错误:
"{"Message":"No parameterless constructor defined for type of
\u0027System.String\u0027.","StackTrace":" at
system.Web.Script.Serialization.ObjectConverter.ConvertDictionaryToObject(IDictionary`2 dictionary, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object\u0026 convertedObject)\r\n at
System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object\u0026 convertedObject)\r\n at
System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object\u0026 convertedObject)\r\n at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToType(Object o, Type type, JavaScriptSerializer serializer)\r\n at System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary`2 rawParams)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\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.MissingMethodException"}"
谢谢。
【问题讨论】:
-
...您尝试过什么调试?您是否打开了一些详细的错误消息?也许添加了一个断点并进入该方法? ...“内部服务器错误”只是默认的 500 响应代码。这意味着某事出了问题——你必须告诉我们那是什么来帮助我们。
-
我在 Chrome 的控制台中收到错误,代码返回到 $.ajax 调用的“错误”函数。发生在我调用 web 服务的 $.ajax 调用行(我在上面显示的确切 Javascipt 代码)。网络服务代码尽可能简单。因此,我认为这是数据如何发送到 Web 服务的问题。
-
在该 javascript 错误函数中放置一个断点并检查其余变量。如果他们只给你通用的
500 - Internal Server Error响应,那么你需要在.NET 端启用一些更详细的错误消息。也许强行转向<customErrors mode="Off" />,这样你就会得到一个丑陋的堆栈跟踪,告诉你更多信息。鉴于Internal Server Error可能意味着任何事情,您的问题无法回答:/ -
尝试发送您的
data,而不用stringifying它... -
@L.B 在没有 stringify 的情况下发送数据会给出相同的错误 (500)
标签: c# javascript jquery .net web-services