我怎样才能将SOAP body作为C#中的一个参数读取

时间:2016-03-28 10:38:12

标签: c# xml web-services soap

这是我正在处理的Web服务的示例请求:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
        <ns0:postRequest xmlns:ns0="http://www.mynamespace.com">
             <Firstname>Mike</Firstname>
             <Lastname>Adam</Lastname>
      </ns0:postRequest>
   </S:Body>
</S:Envelope>

目前我在webmethod中将每个值读作单个参数,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;

namespace myCode
{

    [WebService(Namespace = "http://www.mynamespace.com")]
    public class testInt : System.Web.Services.WebService
    {

        [SoapRpcMethod("http://www.mynamespace.com")]
        [WebMethod]
        public string postRequest(string Firstname, string Lastname)
        {
            return Lastname.ToString();

        }
    }


}

但在实际案例中还有更多参数。 我的问题是如何将它们作为webmethod中的一个参数读取,并指出我无法更改请求XML格式。

(顺便说一句,我创建了一个名为Firstname和Lastname的类作为其中的属性,并将此类用作webmethod中的参数,但它始终为null)

非常感谢

1 个答案:

答案 0 :(得分:0)

我认为这就是你所追求的。它向您展示了如何制作XML模型绑定器。 https://lostechies.com/jimmybogard/2011/06/24/model-binding-xml-in-asp-net-mvc-3/

编辑: 我发现的更为尖锐的是http://docs.asp.net/en/latest/mvc/models/model-binding.html,其中讨论了Microsoft.AspNet.Mvc.Formatters.Xml nuget包。这可能是你最好的选择。