【问题标题】:Cant pass string, but can pass #'s to webmethod无法传递字符串,但可以将#'s 传递给 webmethod
【发布时间】:2013-06-18 18:35:43
【问题描述】:

在我的数据网格设置中使用 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"}

我正在发送的数据看起来像这样...... 当我寄信时……

我的参数为真 _dc 1371570036523 限制 25 第 1 页 rbl asd 开始 0

当我发送一个号码时……

我的参数为真 _dc 1371570093718 限制 25 第 1 页 123 元 开始 0

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

【问题讨论】:

    标签: json parameters asmx webmethod


    【解决方案1】:

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

    【讨论】:

    • 我从没想过,因为它是作为 URL 出现的...谢谢!
    猜你喜欢
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2015-06-28
    相关资源
    最近更新 更多