【问题标题】:WCF Web Service change wsdl name and targetNamespaceWCF Web 服务更改 wsdl 名称和 targetNamespace
【发布时间】:2011-02-03 09:24:29
【问题描述】:

全部,

我对 WCF over IIS 有点陌生,但之前做过一些 ASMX Web 服务。我的 WCF 服务已启动并正在运行,但 Web 服务为我生成的帮助页面具有默认名称,即显示以下内容的页面:

您已经创建了一个服务。

要测试此服务,您需要创建一个客户端并使用它来调用该服务。您可以使用命令行中的 svcutil.exe 工具执行此操作,语法如下:

svcutil.exe http://localhost:53456/ServicesHost.svc?wsdl

在标准的 ASMX 站点中,我将使用方法/类属性为 Web 服务提供名称和命名空间。当我单击 WSDL 的链接时:

<wsdl:definitions name="SearchServices" targetNamespace="http://tempuri.org/" 

即不是我的接口中的 WCF 服务合同名称和命名空间。我假设 MEX 正在使用某种默认设置,但我想将它们更改为正确的名称。我该怎么做?

【问题讨论】:

    标签: web-services wcf


    【解决方案1】:

    将此添加到您的服务合同中

    [ServiceContract(Namespace = "http://some.com/service/", Name = "ServiceName")]
    

    将此添加到您的服务实现中

    [ServiceBehavior(Namespace = "http://some.com/service/")]
    

    将此添加到您的 web.config

    <endpoint binding="basicHttpBinding" bindingNamespace="http://myservice.com"....
    

    【讨论】:

    • 我已经有: [ServiceContract( Name = "XXXXServices", Namespace = "schemas/XXXX/2010/03")] public interface IPublicServices 当我从原始帖子中列出的页面生成 WSDL 时没有任何区别。上面的接口是由一个名为 SearchServices 的类实现的,因此当我单击localhost:53456/ServicesHost.svc?wsdl 链接时,WSDL 定义中生成的名称
    • 是的,但是如何使命名空间动态化。对于 WSDL,我们需要该命名空间(我使用的是 url)来根据环境进行更改。例如 MyCompany.api.stage 和 MyCompany.api.dev 等等。如果您将其硬编码到这些属性的服务定义中,那么通过 SOAPUI 测试 wsdl 的人会收到套接字错误,因为它无法与正确的服务器 url 通信
    【解决方案2】:

    其实应该放在ServiceBehavior上:

    [ServiceBehavior(Namespace = "http://some.com/service/", Name = "ServiceName"]
    

    然后 WSDL 名称将被更改。

    【讨论】:

      【解决方案3】:

      除了@neolei,我使用它来调整 Web 服务的默认服务名称和端口名称,以使其适应现有的集成。

      [ServiceBehavior(Name = "MyServiceName")]
      public class MyServiceClass : IServiceContract
      {
         //other code
      }
      

      生成的 WSDL:

      <wsdl:service name="MyServiceName">
        <wsdl:port name="MyServiceClass" binding="tns:MyServiceClass">
          <soap:address location="http://localhost:52233/MyService.svc"/>
        </wsdl:port>
      </wsdl:service>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-16
        • 1970-01-01
        • 2021-05-26
        • 1970-01-01
        • 2011-09-03
        • 1970-01-01
        • 1970-01-01
        • 2013-07-21
        相关资源
        最近更新 更多