C# Web服务XML前缀

C# Web服务XML前缀,c#,xml,web-services,soap,C#,Xml,Web Services,Soap,首先,我要说,我知道前缀对于遵循标准的xml不重要。我被迫使用一个web服务,该服务要求请求如下所示 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prefix="http://www.url.com"> <soapenv:Header/> <soapenv:Body> <prefix:Search> <Sear

首先,我要说,我知道前缀对于遵循标准的xml不重要。我被迫使用一个web服务,该服务要求请求如下所示

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prefix="http://www.url.com">
<soapenv:Header/>
<soapenv:Body>
  <prefix:Search>
     <SearchCriteria>
        <registrationStatus>A</registrationStatus>
        <startDate/>
        <endDate/>
     </SearchCriteria>
  </prefix:Search>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.url.com">
<soapenv:Header/>
<soapenv:Body>
   <Search (also tried here xmlns="http://www.url.com")>
      <SearchCriteria>
         <registrationStatus>A</registrationStatus>
         <startDate/>
         <endDate/>
      </SearchCriteria>
   </Search>
</soapenv:Body>
</soapenv:Envelope>

A.
当我生成请求时,结果是这样的

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prefix="http://www.url.com">
<soapenv:Header/>
<soapenv:Body>
  <prefix:Search>
     <SearchCriteria>
        <registrationStatus>A</registrationStatus>
        <startDate/>
        <endDate/>
     </SearchCriteria>
  </prefix:Search>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.url.com">
<soapenv:Header/>
<soapenv:Body>
   <Search (also tried here xmlns="http://www.url.com")>
      <SearchCriteria>
         <registrationStatus>A</registrationStatus>
         <startDate/>
         <endDate/>
      </SearchCriteria>
   </Search>
</soapenv:Body>
</soapenv:Envelope>

A.
因为前缀丢失,我收到一个错误,说它找不到搜索子项。使用fiddler,我以一百万种不同的方式重新组合了这个消息,除非我为它添加前缀和名称空间,否则都会失败。我不拥有这个web服务,所有者也不会做任何更改,所以我一直在努力解决这个问题


我的问题是如何将前缀和名称空间添加到请求中?我已经使用add service reference将服务添加到我的c#console测试应用程序中,我尝试修改合格和不合格设置,但没有添加前缀。

我在这里找到了一个好的解决方案


这对于任何希望执行相同操作的其他人来说都非常有效

我认为您必须为类搜索提供targetNamespace。

“当我生成请求时”没有提供足够的信息说明XML创建错误的原因。这有点令人惊讶,因为VS通常正确地生成代理,而决定使用“手动创建web服务请求”路线的人通常知道如何处理XML中的名称空间……感谢您提供的建设性但无用的信息,您的类可以
搜索
这与前缀无关。这是因为名称空间是错误的。您需要在
搜索
对象中设置名称空间。您好,John,这一点您是正确的。出于安全原因清理xml时,我忘了显示这一部分。我确实有它在那里,它仍然抱怨在根和元素级别。我已经更新了问题以显示这一点。通过使用下面的答案,我能够在通过网络发送xml之前对其进行修改,并且效果良好。