无法传递字符串,但可以将#传递给webmethod

时间:2013-06-18 18:35:44

标签: json parameters asmx webmethod

在我的数据网格设置中使用extjs,我将代理api设置为...

api: {
read: '/Admin/BillRateData.aspx/Get?rbl=asd'
},

和我的网络方法......

public static List<Something> Get(string rbl)

Firebug中的回复是......

{"Message":"Invalid JSON primitive: asd.","StackTrace":"   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n   at System.Web.Script.Services.RestHandler.GetRawParamsFromGetRequest(HttpContext context, JavaScriptSerializer serializer, WebServiceMethodData methodData)\r\n   at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}

我发送的数据看起来像这样...... 当我发信件时......

  

MyParameter是的   _dc 1371570036523   限制25   第1页   rbl asd   从0开始

当我发送号码时......

  

MyParameter是的   _dc 1371570093718   限制25   第1页   rbl 123   从0开始

但它不会在web方法上遇到我的断点,并且JS抛出“读取操作失败:内部服务器错误”。但是,如果我将网址更改为“rbl = 123”,它可以正常工作。它似乎只接受数值。这是怎么回事?!

1 个答案:

答案 0 :(得分:1)

您是否尝试在字符串值周围加上双引号?你得到的“原始”错误听起来像是试图将asd解释为已经定义的变量,但它实际上是一个字符串文字(但它不知道)。这也可以解释为什么它似乎适用于数字(你不会在数字周围加上双引号)。