如何使用相对路径引用WSDL文件?

时间:2012-05-30 19:26:43

标签: c# visual-studio-2010 web-services wsdl

我在磁盘上有一个WSDL文件,并作为Web引用加载。问题是web引用本身在我的机器上寻找WSDL(使用绝对路径),这显然不适用于队友的机器。

是否可以让Web引用查找具有相对路径的WSDL,或者从Resources文件中查找? WSDL用于我们已修改的第三方服务,以添加一些额外的字段(根据他们的建议)。

2 个答案:

答案 0 :(得分:8)

当您在计算机上向WSDL文件添加服务引用时,它将被复制到您的"服务引用"项目中的文件夹。此时,您的服务API已确定。有一个" Reference.svcmap" (XML)创建时保存WSDL文件原始位置的位置。这样,如果API发生更改,您可以更新项目中的服务引用。但是,即使没有原始的WSDL文件,您也可以检查代码,您的团队可以毫无问题地使用它。但是,如果您希望它们能够在API更改时更新服务,那么您需要在公共可访问的位置实际托管该WSDL文件。通常,Web服务本身提供WSDL文件,您不会在文件系统上拥有它。如果您计划更新和更改Web服务,则应连接到开发Web服务器上托管的WSDL。这真的是它所属的地方,而不是本地文件。但是,在有人试图更新之前,您的本地文件引用没有理由不会正常工作。如果您的网络服务永远不会改变,那么您就没有问题。如果它可以改变,那么将它托管在某个地方并引用一个真实的URL。

我在Reference.svcmap文件中调整XML以尝试相对路径引用的初步测试不起作用,但是如果您确定要在问题描述的情况下让它工作,那么这就是您尝试的地方

答案 1 :(得分:1)

我的建议是使用cmd行工具wsdl.exe或svcutil.exe创建一个编程代理,以创建随后可以添加到解决方案中的.cs或.vb代理。

这允许根本不需要wsdl文件。有关.NET 2.0 http://msdn.microsoft.com/en-us/library/7h3ystb6(v=vs.80).aspx

的详细信息,请参阅此处

for .NET 3.5或更高版本以及svcutil在这里查看:http://msdn.microsoft.com/en-us/library/aa751905.aspx