我开发了一个在本地运行良好的C#应用程序。
但是当我穿上服务器时会出现问题。
应用程序在他的引用(A.dll)中使用DLL库,并且在执行点A.dll在Temp目录中创建另一个DLL(嵌入其中,我们称之为B.dll)。 但是当A.dll尝试加载B.dll时,会抛出异常:
system.invalidoperationexception: failed to load B.dll
我没有访问DLL源代码,是库。
所以回顾一下:
所以在这一点上我认为这是服务器上的安全问题,比如“进程无法加载DLL”或类似的东西。
例外情况: http://i.imgur.com/NmB2Fth.png?1
任何人都可以建议我解决方案吗?我会更好地检查吗?在哪里?
P.S 如果我尝试注册该DLL我得到相同的错误: Register DLL file on Windows Server 2008 R2
答案 0 :(得分:2)
解决方案很简单。
我使用了一个名为事件查看器的非常有用的工具(开始 - >执行 - > eventvwr.exe) 当我启动我的应用程序时,Windows Logs-> Applications:
上显示了一个新的错误事件Activation context generation failed for "C:\Temp\APP\myfile.dll".
Dependent Assembly Microsoft.VC90.CRT,processorArchitecture="x86",
publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found.
Please use sxstrace.exe for detailed diagnosis.
快速搜索,结果是服务器需要Visual C++ Runtime for x86
(x86,因为我的应用程序在32位应用程序池中工作)
安装此软件包后:http://www.microsoft.com/en-us/download/details.aspx?id=5582
一切都像魅力一样。
我希望这可以帮助任何人节省一些时间!!