将自定义对象发送到asp.net Web服务

时间:2011-12-02 02:27:00

标签: c# asp.net json web-services

所以我想将自定义对象发送到asp.net 4.0 Webservice 我一直在发送一堆个别参数,但我想开始重用一些代码,所以我想做一些像

这样的事情
    [WebMethod(Description = "Testing Sending Object In")]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public bool COT(CodeWithMessage CWM)
    {
...

CodeWithMessage的类是

namespace UserSite
{
    namespace General
    {
        public class CodeWithMessage
        {
            public int iCode { get; set; }
            public string sMessage { get; set; }
            public CodeWithMessage()
            {
            }
        }
    }
}

webservice将输入定义为

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <COT xmlns="http://localhost">
          <CWM>
            <iCode>int</iCode>
            <sMessage>string</sMessage>
          </CWM>
        </COT>
      </soap:Body>
    </soap:Envelope>

我尝试将以下json传递给webservice

      var postdata = { "iCode": -5, "sMessage": "BlogName " }

我收回内部服务器错误[500]

  

{“Message”:“无效的JSON原语:iCode。”

我是否需要以某种方式将其包装起来以表明它是此对象的一部分?我试过了

{"__type":"UserSite.General.CodeWithMessage","iCode":-5,"sMessage":"Blog Name Already Exists"}

CodeWithMessage从另一个发送它的Web服务返回而不是接收它。

1 个答案:

答案 0 :(得分:1)

你的错误说你Json错了你需要检查你传递给webservice的json字符串。

它可能就像

var postdata = { 'iCode': '-5', 'sMessage': 'BlogName' }

检查jSon字符串示例:jSon网站上的http://www.json.org/js.html ........