在Webmethod中接收jsonQuery字符串

时间:2014-07-14 09:02:11

标签: c# json

我已将Json发送到Web方法。而web方法没有接收json作为字符串。

POST方法Test1.aspx -

 var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:49633/Test3.aspx/Get");

                httpWebRequest.ContentType = "application/json";
                httpWebRequest.Method = "POST";

                using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                {
                    string json = "{\"d\":{\"accessKey\":\"Chennai\",\"channelId\":\"1025\"}}";

                    streamWriter.Write(json);
                }
                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var responseText = streamReader.ReadToEnd();
                    return responseText;
                }

Test3.aspx中的WEB方法

   [System.Web.Services.WebMethod]
        public static string Get(string d)
        {
            return d;
        }

回复 -

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>

    </title></head>
    <body>
        <form name="form1" method="post" action="Booking.aspx" id="form1">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTg3NjI4NzkzNmRkOvsswBe8G74mfKP2QBvs0WW2jms=" />

        <div>   
  <span id="Label3"><font color="Fuchsia">Responce:-</font></span>
            <span id="Label1">Label</span> 
        </div>
        </form>
    </body>
    </html>

QUERY -

我收到HTML页面的回复。但是我希望收到我通过POST方式发送的Json

JSON STRING -

{"d":{"accessKey":"Chennai","channelId":"1025"}}   

编辑

我已将json字符串更改为{&#34; accessKey&#34;:&#34; Chennai&#34;,&#34; channelId&#34;:&#34; 1025&#34;}并更改了webmethod获取字符串。

 [System.Web.Services.WebMethod]
            public static string Get(string accessKey, string channelId)
            {
                return accessKey + channelId;
            }  

我收到了正确的channelId,accesskey值。但我的原始字符串非常大。所以我需要接收相同的Json字符串,我通过POST方法发送。 bzs我只接受部分接收。我的客户端之一通过调用此Webs方法发送Json字符串。感谢。

编辑2 -

根据Mez Said,我已经包含了ScriptMethod。但它通过远程服务器返回错误:(500)内部服务器错误。

 [System.Web.Services.WebMethod]

    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
            public static string Get(string d)
            {          
                return d;
            }

1 个答案:

答案 0 :(得分:0)

您可能达到了json的最大限制。尝试将此添加到您的web.config。

<configuration>
    ... 
    <system.web.extensions>
        <scripting>
            <webServices>
                <jsonSerialization maxJsonLength="300000" />
            </webServices>
        </scripting>
    </system.web.extensions> 
</configuration>