6

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

是否可以让 Web 参考使用相对路径或从资源文件中查找 WSDL?WSDL 用于第三方服务,我们已对其进行了修改以添加一些额外的字段(根据他们的建议)。

4

2 回答 2

9

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

我在 Reference.svcmap 文件中调整 XML 以尝试获取相对路径引用的初步测试没有奏效,但如果您决定确实希望按照您的问题描述的那样工作,那么这里就是您尝试的地方。

于 2012-06-07T21:07:24.730 回答
1

我的建议是使用命令行工具 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

于 2012-06-08T19:31:09.600 回答