2010-04-01 141 views
14

所有,WCF Web服务更改WSDL名称和目标名称

我有点新WCF在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正在使用某种默认设置,但我想将它们更改为正确的名称。我怎样才能做到这一点?

回答

36

添加到您的服务合同

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

添加到您的服务实现

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

添加到您的web.config

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

我已经有了: [的ServiceContract( NAME = “XXXXServices”, 命名空间= “HTTP://模式/ XXXX/2010/03”)] 公共接口IPublicServices 不作任何时候差我从原始文章中列出的页面生成WSDL。 上述接口由名为SearchServices的类实现,因此,当我单击http:// localhost:53456/ServicesHost.svc?wsdl链接 – Graham 2010-04-01 14:52:43

+0

时,WSDL定义中生成的名称会生成,但是如何使该名称空间动态。对于WSDL,我们需要该名称空间(我正在使用url)根据环境进行更改。示例MyCompany.api.stage和MyCompany.api.dev等。如果您将它硬编码到这些属性的服务定义中,那么通过SOAPUI测试wsdl的人将获得套接字错误,因为它无法与正确的服务器url进行通信 – PositiveGuy 2014-11-06 22:34:33

4

事实上,应该把在ServiceBehavior上:

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

然后WSDL名称将被改变。