3

我在让客户与我的系统集成时遇到问题。我想我已经缩小了问题的范围。客户端通过 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>

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

4

2 回答 2

3

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

[ServiceContract(Namespace = "")]

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

祝你好运!

于 2012-05-18T19:02:36.937 回答
1

I'm pretty sure that's from the WebService.svc (or .asmx) class having a [WebService(Namespace = "http://tempuri.org/")] attribute at the top of the class definition. Removing this (or setting it to an appropriate value) should remedy the problem.

于 2012-05-18T19:00:16.883 回答