WebService本地VS运行正常,发布到IIS异常
1、环境:64位win7系统,oracle64位服务器端,32位客户端。
2、案例:一个WebService接口,本地F5调试运行OK,能正常返回结果。发布到服务器上也okay。添加虚拟目录,发布到本地IIS则无法返回正常结果。
3、初步想法:将IIS的运行环境设置为32位
4、解决方案:(IIS7已尝试并成功,IIS未测试)
IIS7上的做法:IIS7应用程序池,高级设置-->允许32位应用程序。---okay
IIS6上的做法:
1.命令行键入:
cscript.exe %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
即设置IIS6允许32位程序运行在64位机器上
2.重新注册.net frameWorks
%SYSTEMROOT%\Microsoft.NET\framework\v2.0.50727\aspnet_regiis.exe -i
3.完成之后,看Web服务扩展,应该会多出一个32位的asp.net将其设置为允许,缺点:这样会使整个IIS上的所有站点都以32位兼容方式运行 。
其它问题:比如Service Unavailable。看一下错误日志,我遇到的是RpcProxy.dll无法加载和无法加载站点/服务的所有 ISAPI 筛选器错误。解决方法:打开iis-->查看“网站”的属性--->ISAPI 筛选器-->把有向下的红箭头的项删除掉-->重启iis-->OK
5、探索过程:
由于VS环境调试运行OK,所以源代码应该无误。发布到服务器IIS也能正常运行。怀疑是本地IIS设置问题。(其实现在是回头看问题,中间各种尝试,各种弯路)
下面是调试过程中遇到的一些错误,截图分享。。。
错误一:运行到字段加密处出现的,现在去想应该是添加的AESmt.dll是32位所致。
错误二:(应该是IIS超时问题)
错误三:异常信息已经很明确了,很感谢这异常问题,引导我找到IIS配置的解决方案。(此类错误解决方案有多种,原理就是版本统一或者兼容)