【问题标题】:WCF Remove xmlns:tem="http://tempuri.org/"WCF 删除 xmlns:tem="http://tempuri.org/"
【发布时间】:2012-05-18 18:56:12
【问题描述】:

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

我相信,如果我可以删除前缀,那么这应该将客户端的消息与预期的消息相匹配。问题是我在哪里删除前缀“

【问题讨论】:

    标签: c# .net xml wcf soap


    【解决方案1】:

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

    [ServiceContract(Namespace = "")]
    

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

    祝你好运!

    【讨论】:

    • 所以,这实际上是一个更大问题的答案。我有一个服务项目,用作 WCF 引用和其他项目中的二进制引用。由于其中一些站点的位置,我必须为不同的应用程序公开不同的服务,这意味着命名空间将根据它在哪里使用。设置空白命名空间允许我仅通过 Web 配置设置 URI..
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-04
      • 2011-07-03
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多