【发布时间】:2017-02-02 14:05:30
【问题描述】:
我有一个网站项目,我在其中使用网络服务来获取数据。该服务是与网站位于同一项目中的 .asmx。因此,此 Web 服务的引用(web.config、.svcinfo、.disco、.wsdl 和 .svcmap 中的端点)在开发时指向 localhost。部署网站(发布)时,我需要在构建之前更新引用,以便它指向我正在部署它的位置。
我在不同的构建上下文中使用了 web.config-transformations 来更新 web.config 中的引用,并尝试创建一个 BeforeBuild 任务以通过调用 SvcUtil.exe 来生成 .wsdl、.svcinfo 等。
Web.config 转换工作正常,但 SvcUtil.exe 尝试发现已部署地址上的 Web 服务以生成文件,所以...因为所有这一切都发生在部署时,然后由于没有 Web 服务而不会生成文件目标地址。
我发现流程应该是这样的:
1- 从 web.config-transformations
获取目标地址
2- 发现 LOCAL(在项目中,不在目标中)Web 服务
3- 使用目标地址创建或更新 .wsdl、.disco 等
4-构建
5- 部署
但我不知道如何让它发挥作用……有什么想法吗?
【问题讨论】:
-
不能发布,更新参考,再发布吗?将来,最好避免将 Web 服务和客户端代码放在同一个项目中,以避免出现这种情况。您应该能够独立发布任何一方。
-
你是绝对正确的@Seano666,但我们凡人必须按照老板想要的方式编写代码......不管这是否是最好的方式。
-
这是多么真实:),我很好奇我提到的双重发布是否可行。
-
是的@Seano666,双重发布工作......我只是想避免它,因为我觉得必须有一个更聪明的方法来实现它。现在试试 Tomassino 的建议
标签: c# asp.net web-services wsdl