无论我在Visual Studio中的asmx服务中进行了哪些更改,WSDL文件始终保持不变。当我浏览到服务定义时,删除方法,更改方法签名没有任何效果。
我遇到过类似的问题。
删除枚举并用字符串替换它时,枚举不会离开wsdl。无论我尝试了什么(清理,重建,清除浏览器缓存,其他浏览器),它都会将枚举作为WSDL中的复杂类型返回。
我的解决方案是通过Windows资源管理器删除项目的本地文件夹,然后从TFS执行最新的。在此之后问题得以解决。
当然,此解决方案仅适用于使用源控制系统。
更改服务后,您必须构建它并确保新版本正在运行。一个快捷方式是构建它(并确保没有错误),然后右键单击.ASMX文件并选择“在浏览器中查看”。
此外,虽然我确信您已经意识到这一点,但您不应该使用ASMX Web服务进行新开发。微软现在认为ASMX是一项传统技术。请改用WCF。
我遇到了这个问题,并有一个解决方案。
原因:在Visual Studio中创建新的“Web服务”项目时,它会自动将“Service1.asmx”文件添加到项目中。您重命名此文件并更改其中的类声明,但Studio仍然认为它是“Service1”wnd将只显示“Service1”的Web服务定义。
解:
您的asmx现在应该准确反映您的Web服务并在将来的构建中正常更新。
我今天遇到了同样的问题。它是由包含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版本按预期显示。