在学习WebService过程之中,在创建并在IIS中发布一个web服务之后,对于调用该web服务的工程,当web服务后台代码更新并编译之后,需要对该工程引用的web服务进行“重新更新web引用”操作。但经这样操作之后,仍然提示“源代码与模块代码不一致”的异常,运行webService接口时,仍然执行未更新之前的webservice后台代码。

      问题在什么地方呢?仔细研究了一番,发现了原因:由于调用工程是调用的本机发布在IIS上的webService(其存放位置为:C:\Inetpub\wwwroot\DataSetService\bin\DataSetWebService.DLL),所以,报异常时提示的“模块代码动态库dll”必然是在初始发布webService时生成的动态库文件,其存放位置为:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\datasetservice\a295a5fa\99a87c7c\assembly\dl3\ecf6ec5d\fc129abd_4ed9c901\DataSetWebService.DLL,而在调用工程中,实际进行web引用的即为该动态库文件,于是尝试重新发布一次webService到IIS中,并在调用工程中执行“重新更新web引用”操作,再运行项目,发现程序正常运行更新后的webService接口方法。

      补充知识:在visual studio 2008编译环境中,对webService项目进行发布到IIS的操作,实际是在C:\Inetpub\wwwroot\目录位置存放几个文件并建立web虚拟目录,包括:Web.config、DataSetService.asmx、bin文件夹。而在webservice动态库实际被调用的过程中,则会根据C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\datasetservice\a295a5fa\99a87c7c\assembly\dl3\ecf6ec5d\fc129abd_4ed9c901\DataSetWebService.DLL目录中的dll文件进行方法调用。