这次项目需要,做了一个C#写的WebService服务给外部调用,服务内部引用了算法库,本地调试已经通过,现场部署服务时各种提示找不到DLL文件。
第一、如果是包含有32位库在64位服务器系统上运行,会有一个运行时错误,64位的IIS默认“应用程序池”不启用32位支持,需要去“高级设置”里启用32位支持
第二、找不到Dll处理方法:
网上查到的Dllimport路径相关:
DllImport会按照顺序自动去寻找的地方:
1、exe所在目录
2、System32目录
3、环境变量目录
三种都试过没用,依然提示找不到DLL,无法加载,用depends软件查了该库文件,依赖项都有,百思不得其解。
最后逼的没办法,把depends发给现场让他们看那个算法DLL的依赖项,最后发现是现场服务器中缺少msvcr100.dll跟msvcp100.dll,本地开发环境有这些。希望跟我遇到一样问题的人能够早点发现。
如果调试环境没有问题,必然是实际应用与调试环境有区别,服务运行不了不一定是代码相关。