Wsdl永远不会更新

问题描述 投票:1回答:4

无论我在Visual Studio中的asmx服务中进行了哪些更改,WSDL文件始终保持不变。当我浏览到服务定义时,删除方法,更改方法签名没有任何效果。

web-services visual-studio-2010 asmx
4个回答
1
投票

我遇到过类似的问题。

删除枚举并用字符串替换它时,枚举不会离开wsdl。无论我尝试了什么(清理,重建,清除浏览器缓存,其他浏览器),它都会将枚举作为WSDL中的复杂类型返回。

我的解决方案是通过Windows资源管理器删除项目的本地文件夹,然后从TFS执行最新的。在此之后问题得以解决。

当然,此解决方案仅适用于使用源控制系统。


0
投票

更改服务后,您必须构建它并确保新版本正在运行。一个快捷方式是构建它(并确保没有错误),然后右键单击.ASMX文件并选择“在浏览器中查看”。

此外,虽然我确信您已经意识到这一点,但您不应该使用ASMX Web服务进行新开发。微软现在认为ASMX是一项传统技术。请改用WCF。


0
投票

我遇到了这个问题,并有一个解决方案。

原因:在Visual Studio中创建新的“Web服务”项目时,它会自动将“Service1.asmx”文件添加到项目中。您重命名此文件并更改其中的类声明,但Studio仍然认为它是“Service1”wnd将只显示“Service1”的Web服务定义。

解:

  1. 删除项目中的所有“bin”和“obj”文件夹。
  2. 将方法从现有的asmx文件复制到记事本。
  3. 从项目中删除服务。
  4. 使用您想要的名称向项目添加新服务。
  5. 将记事本中的代码粘贴到新服务中。
  6. 全部重建

您的asmx现在应该准确反映您的Web服务并在将来的构建中正常更新。


0
投票

我今天遇到了同样的问题。它是由包含Web服务公开的类型定义的程序集的GACed版本引起的。我必须首先从全局程序集缓存中删除程序集,如:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe" /u YourAssemblyNameWithouthDllExtebsion /f

确保重新启动托管Web服务的Web服务器以重新加载新版本的程序集,例如,在IIS Express的情况下,您可以通过PowerShell终止以前的流程实例:

(Get-Process -Name iisexpress).Kill()

之后,更新的WSDL版本按预期显示。

© www.soinside.com 2019 - 2024. All rights reserved.