我正在使用JQuery和Ajax与ASP.Net Web服务进行接口。这里是jQuery代码:获取500错误
$.jrpc = function(url, id, method, params, success, error) {
var request = $.json_stringify({
'jsonrpc': '2.0', 'method': method,
'params': params, 'id': id});
return $.ajax({
url: url,
data: "json=" + encodeURIComponent(request),
success: success,
error: error,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: true,
cache: false,
//timeout: 1,
type: 'POST'});
};
这里是Web服务代码:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class Access : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string EntryMethod(string json)
{
Requests d = JsonConvert.DeserializeObject<Requests>(json);
Response resp = new Response();
resp.jsonrpc = d.jsonrpc;
resp.result = "Got the call!";
resp.id = d.id;
resp.error = null;
JavaScriptSerializer response = new JavaScriptSerializer();
string r = response.Serialize(resp);
return r;
}
}
我收到此错误:
[AJAX]错误 - 服务器效应初探是: {“消息“:”无效的JSON基元:json。“,”StackTrace“:”在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\ r \ n System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32深度) \ r \ n在System.Web.Script.Serialization.JavaScript在System.Web.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer序列化程序,字符串输入,类型类型,Int32 depthLimit)\ r \ n上的ObjectDeserializer.BasicDeserialize(String input,Int32 depthLimit,JavaScriptSerializer序列化程序)\ r \ n .Script.Serialization.JavaScriptSerializer.Deserialize [T](String input)\ r \ n在System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext上下文,JavaScriptSerializer序列化程序)\ r \ n .RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext的上下文)\ r \ n在System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext的上下文中,WebServiceMethodData methodData)”, “ExceptionType”: “System.ArgumentException”}
使用ASP.Net webservice测试页面,以下是我的标题和请求字符串: Cache-Control:隐私te,max-age = 0 Date:Wed,03 Oct 2012 19:47:16 GMT Content-Length:149 Content-Type:text/xml;字符集= UTF-8 服务器:ASP.NET开发服务器/ 10.0.0.0 X-ASPNET-版本:4.0.30319 连接:关闭
JSON =%7B%22jsonrpc%22%3A%222.0%22% 2C%22方法%22%3A%22测试%22%2C%22params%22%3A%5B%5D%2C%22%%22%3A1%7D
这里是我的Ajax调用的头/请求字符串,没有工作: Cache-Control:private Date:Wed,03 Oct 2012 19:47:09 GMT Content-Length:1062 Content-Type:application/json;字符集= UTF-8 jsonerror:真 服务器:ASP.NET开发服务器/ 10.0.0.0 X-ASPNET-版本:4.0.30319 连接:关闭
JSON =%7B%22jsonrpc%22%3A% 222.0%22%2C%22方法%22%3A%22%22%2C%22%22%3A%5B%5D%2C%22%%22%3A1%7D
任何想法,为什么我得到这个错误?我试着用Google搜索,但没有结果真的帮助我。
编辑:
如果我使用: 数据: “{ 'jsonrpc': '2.0', '方法': '测试', 'PARAMS':[], 'ID':1}”,
我得到这个错误: [AJAX]错误 - 服务器效应初探是: { “消息”: “无效的Web服务调用,进行参数缺失值:\ u0027json \ u0027。”, “堆栈跟踪”:”在系统.Web.Script.Services.WebServiceMethodData.CallMethod(Object target,IDictionary 2 parameters)\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在System.Web.Script.Services.R estHandler。ExecuteWebServiceCall(HttpContext的上下文中,WebServiceMethodData methodData) “ ”ExceptionType“: ”System.InvalidOperationException“}
如果我使用: 数据:” JSON = { 'jsonrpc': '2.0', '方法': '测试' 'PARAMS':[], 'ID':1}”,
我得到这个错误: [AJAX]错误 - 服务器效应初探是: { “消息”: “无效的JSON原始:JSON” “System.Web.Script的System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32深度)\ r \ n上的System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\ r \ n中的”StackTrace“:” Serialization.JavaScriptObjectDeserializer.BasicDeserialize(字符串输入,Int32 depthLimit,JavaScriptSerializer序列化程序) \ r \ n在System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer序列化程序,字符串输入,类型类型,Int32 depthLimit)\ r \ n在System.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T](String输入)\ r \ n在System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext上下文,JavaScriptSerializer序列化程序)\ r \ n System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext上下文)\ r \ n \ r \ n在System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext上下文,WebServiceMethodData methodData)“,”ExceptionType“:”System.ArgumentException“}
似乎你的代码有反序列化你发送给它的问题,你可以发布你发送的实际json吗? – ars265
发表于json。 – Sugitime