Wsdl永远不会更新

时间:2011-10-11 13:54:14

标签: web-services visual-studio-2010 asmx

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

4 个答案:

答案 0 :(得分:1)

我有一个类似的问题。

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

<强>解决方案:

  1. 删除项目中的所有“bin”和“obj”文件夹。
  2. 将方法从现有的asmx文件复制到记事本。
  3. 从项目中删除服务。
  4. 使用您想要的名称向项目添加新服务。
  5. 将记事本中的代码粘贴到新服务中。
  6. 重建所有
  7. 您的asmx现在应准确反映您的网络服务,并在未来版本中正常更新。

答案 3 :(得分: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版本按预期显示。