【发布时间】:2012-05-30 19:26:42
【问题描述】:
我在磁盘上有一个 WSDL 文件并作为 Web 参考加载。问题是 Web 引用本身正在我的机器上查找 WSDL(使用绝对路径),这显然不适用于队友的机器。
是否可以让 Web 参考通过相对路径或从资源文件中查找 WSDL? WSDL 适用于我们已修改以添加一些额外字段(根据他们的建议)的第三方服务。
【问题讨论】:
标签: c# visual-studio-2010 web-services wsdl
我在磁盘上有一个 WSDL 文件并作为 Web 参考加载。问题是 Web 引用本身正在我的机器上查找 WSDL(使用绝对路径),这显然不适用于队友的机器。
是否可以让 Web 参考通过相对路径或从资源文件中查找 WSDL? WSDL 适用于我们已修改以添加一些额外字段(根据他们的建议)的第三方服务。
【问题讨论】:
标签: c# visual-studio-2010 web-services wsdl
当您向计算机上的 WSDL 文件添加服务引用时,它会被复制到项目中的“服务引用”文件夹中。此时,您的服务的 API 已确定。有一个创建的“Reference.svcmap”(XML) 保存 WSDL 文件的原始位置。这样您就可以在 API 更改时更新项目中的服务引用。但是,即使没有原始 WSDL 文件,您也可以签入代码,并且您的团队可以毫无问题地使用它。但是,如果您希望他们能够在 API 更改时更新服务,那么您需要将 WSDL 文件实际托管在可公开访问的位置。通常,Web 服务本身提供 WSDL 文件,而您的文件系统中不会有它。如果您计划更新和更改 Web 服务,您应该连接到托管在开发 Web 服务器上的 WSDL。那确实是它所属的地方,而不是本地文件。但是,在有人尝试更新它之前,您的本地文件引用没有理由不能正常工作。如果您的网络服务从不改变,那么您就没有问题。如果它可以更改,则将其托管在某个地方并引用一个真实的 URL。
我在 Reference.svcmap 文件中调整 XML 以尝试相对路径引用的初始测试没有奏效,但如果您决定确实希望按照您的问题描述的那样工作,这是您尝试的地方.
【讨论】:
我的建议是使用命令行工具 wsdl.exe 或 svcutil.exe 创建一个编程代理来创建 .cs 或 .vb 代理,然后您可以将其添加到解决方案中。
这允许根本不需要 wsdl 文件。在此处查看有关 .NET 2.0 的更多信息http://msdn.microsoft.com/en-us/library/7h3ystb6(v=vs.80).aspx
.NET 3.5 或更高版本和 svcutil 看这里:http://msdn.microsoft.com/en-us/library/aa751905.aspx
【讨论】: