生成的SOAP服务接口不在正确的名称空间中

问题描述:

我有一个相对较小的问题。 我正在开发和我的应用程序和第三方程序之间的接口。它们之间的通信由SOAP webservices完成。他们为我提供了他们将用来接收和发送数据的wsdl。我使用wsdl.exe工具创建了服务界面和客户端,并且在生成代码时没有错误或警告。生成的SOAP服务接口不在正确的名称空间中

问题来自生成的代码名称空间。它不使用界面中定义的那个,而是使用tempuri.org。 好了,没什么大不了的,我可以定义在

[ServiceContract (Namespace = "theDesiredNamespace")] 

问题的命名空间是我想从

http://theDesiredNamespace/myMethod 

提供给我的web服务方法的访问,而是我的服务在提供它:

http://theDesiredNamespace/nameOfTheInterface/myMethod 

其中nameOfTheInterface是由wsdl工具自动生成的接口的名称。

任何关于我如何处理这个问题的建议?我知道最简单的解决方案是实际将我的新wsdl版本发送给第三方(因为它应该完成),但我没有真正的选择。

有没有解决这个问题的方法?

  1. WSDL.EXE适用于传统的ASMX Web服务,不适用于WCF(当您使用[ServiceContract]时,您正在使用这种服务)。
  2. 虽然它看起来像一个URL,但XML名称空间与网络上的位置无关。你想要使用像http://www.company.com/webservices/applicationName/serviceName/这样的单个命名空间。然后,您可以通过您喜欢的任何网址访问您的服务。 XML名称空间和服务的URL之间没有关系。
+0

谢谢你的回答,虽然我仍然错过了一些东西。 我同意wsdl如果对ASMX Web服务,而不是Wcf,但我如何生成我的服务器接口代码呢? 然后,我也明白了xml名称空间和我可以访问的url之间的区别,但是我按照我想要的方式加载了设置此url的fiddiculties。它会自动添加一些接口名称,而不需要进入。我已经在[ServiceContract]中设置了URL中使用的名称空间,但仍然在该名称和我的方法名称之间添加了接口名称 – srodriguez 2009-09-03 04:29:12

+1

使用svcutil.exe命令。 – 2009-09-03 04:33:44