VS2003中,打开.net 2003运行环境cmd窗口,运行
C:\>wsdl http://localhost/wsshouhuo/shouhuo.asmx?wsdl
Microsoft (R) Web 服务描述语言实用工具
[Microsoft (R) .NET Framework,版本 1.1.4322.2037]
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.
错误: 找不到方法:Void System.Web.Services.Discovery.DiscoveryClientProtocol.LoadExternals()。
如果需要更多帮助,请键入“wsdl /?”。
在未安装vs2003 sp1前没有此错误。安装sp1之后出现此错误,google,Baidu都没有搜到解决方案,不得不自己动手。
用反编译器打开System.Web.Services.Discovery.DiscoveryClientProtocol未发现有LoadExternals()方法,由此断定在sp1之后,wsdl.exe调用了该方法。
说明.net framework在sp1之前应该发生了变化,通过windows update下载.net framewrok 1.1 sp1安装之后问题解决。
该问题最可能出现在新装系统之后,安装vs2003之后直接安装vs2003 sp1,而忽视了安装.net framewrok 1.1 sp1。