WCF删除xmlns:tem =“http://tempuri.org/”

时间:2012-05-18 18:56:13

标签: c# .net xml wcf soap

我在让客户端与我的系统集成时遇到问题。我想我已经缩小了这个问题。客户端通过xml消息发送,我的系统设置为接受xml消息;但它以某种格式期待它。客户表示希望我在我的终端上设置格式以接受他们的格式。

这是客户留言:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  
                  xmlns:tem="http://tempuri.org/">
            <soapenv:Header/>
            <soapenv:Body>
               <NewOrder>
                  <Message id="d3a39c31-cc9f-4331-ad13-be74522df6eb">
                     <Header>
                        <LoginAccountIdentifier>Blank</LoginAccountIdentifier>
                        <LoginAccountPassword>password</LoginAccountPassword>
                     </Header>

我注意到我的预期格式在节点上除了前缀tem:

这是预期的消息:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                      xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:NewOrder>
         <tem:Message id="d3a39c31-cc9f-4331-ad13-be74522df6eb ">
            <Header>
               <LoginAccountIdentifier>Blank</LoginAccountIdentifier>
               <LoginAccountPassword>password</LoginAccountPassword>
            </Header>

我相信如果我可以删除前缀,那么这应该将客户端的消息与预期消息相匹配。问题是我在哪里删除前缀“&lt; tem:”;此外,如何防止这个变量xmlns:tem =“http://tempuri.org/”显示在我的文档中?

2 个答案:

答案 0 :(得分:2)

我很久以前遇到过类似的问题。试试这个:

[ServiceContract(Namespace = "")]

显然,前缀由命名空间决定,所以如果你想删除它,那么这就是要走的路。

祝你好运!

答案 1 :(得分:1)

我很确定这是来自WebService.svc(或.asmx)类的 [WebService(Namespace = "http://tempuri.org/")] 属性位于类定义的顶部。删除它(或将其设置为适当的值)可以解决问题。