我在磁盘上有一个 WSDL 文件并作为 Web 参考加载。问题是 Web 引用本身正在我的机器上寻找 WSDL(使用绝对路径),这显然不适用于队友的机器。
是否可以让 Web 参考使用相对路径或从资源文件中查找 WSDL?WSDL 用于第三方服务,我们已对其进行了修改以添加一些额外的字段(根据他们的建议)。
我在磁盘上有一个 WSDL 文件并作为 Web 参考加载。问题是 Web 引用本身正在我的机器上寻找 WSDL(使用绝对路径),这显然不适用于队友的机器。
是否可以让 Web 参考使用相对路径或从资源文件中查找 WSDL?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