Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中如何将SOAP主体作为一个参数来读取#_C#_Xml_Web Services_Soap - Fatal编程技术网

C# 在C中如何将SOAP主体作为一个参数来读取#

C# 在C中如何将SOAP主体作为一个参数来读取#,c#,xml,web-services,soap,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> <

这是对我正在处理的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中的一个参数读取,注意我不能更改请求XML格式

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


非常感谢

我想这就是你想要的。它向您展示了如何制作XML模型绑定器

编辑:
我刚刚发现了一个更为尖锐的东西,它谈到了一个Microsoft.AspNet.Mvc.Formatters.Xml nuget包。这可能是你最好的选择。

请求正文看起来很奇怪。您确定它是这样对requestid标记进行编号的吗?如果不是因为这个原因,默认的模型绑定器可以为您将其解析为dto poco,但实际上您可能需要一个自定义的模型绑定器。为了更清楚,我将它们更改为Firstname,Lastname@Danielvanheerdent。问题不在于编号本身。如果所有标签都有相同的名称。例如
value1value2…
等等,那么您可以创建一个简单的对象,该对象带有一个名为ValueItem的字符串数组,并将其用作postRequest方法的参数,模型绑定器会为您绑定它。您现在可以创建一个包含Firstname和Lastname以及所有其他属性的对象,模型绑定器会将找到的所有对象绑定到对象的新实例,并将其传递给postRequest方法,但这是否为您解决了问题?是的,这将为我解决问题。事实上,这就是我想要的。事实上,我创建了一个以firstname和lastname作为属性的类,并在webmethod中使用它作为参数,但它始终为null……我不确定问题是什么,以及解决这个问题的正确代码是什么(如果您有任何想法,我们可以在我的问题中的示例代码上执行)@DanielvanHeerden
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();

        }
    }


}