在托管网站的虚拟机上找不到指定的模块错误

时间:2011-02-01 20:23:55

标签: asp.net compilation assemblybinding

我一直在远程处理一个运行ASP.NET 3.5网站的Windows Server 2003虚拟机的奇怪情况......或者,至少是试图运行它。

该网站是使用该项目的标准安装程序安装的,该安装程序已用于安装在多个不同的位置。但是,这个表现不同。

网站运行失败。在事件查看器中,报告以下错误:

  

异常信息:       异常类型:HttpException       异常消息:找不到指定的模块。 (例外   来自HRESULT:0x8007007E)

该错误在网站上报告为:

  

异常详细信息:   System.IO.FileNotFoundException:The   找不到指定的模块。   (HRESULT异常:0x8007007E)

运行Fusion日志查看器,我可以看到ASP.NET正在尝试加载以下程序集:

  

CppCodeProvider,版本= 8.0.0.0,   文化=中性,   公钥= b03f5f7f11d50a3a   VJSharpCodeProvider,版本= 2.0.0.0,   文化=中性,   公钥= b03f5f7f11d50a3a

首先,ASP.NET没有理由加载这些程序集。我在machine.config或任何其他配置中找不到这些程序集所需的任何配置。我们尝试安装3.5 SDK,但都没有安装。我的开发机器上只有CPPCodeProvider的第10版。

这里到底发生了什么?

注意:请不要粗略搜索谷歌搜索和回答。我找不到任何适用的东西。如果有人回答

“定义DEBUG常量”和“定义TRACE常量”

我打算穿过小管。

1 个答案:

答案 0 :(得分:4)

该死的红鲱鱼。

事实证明我有一个依赖于msvc71.dll的依赖项。因为我的虚拟机没有此DLL,所以加载依赖项失败。但是,由于代码中的蹩脚异常消息(以及框架的这一部分,坦率地说),此错误显示为

  

找不到指定的模块。 (HRESULT异常:0x8007007E)

当我看到这样的事情时,我的第一直觉就是提升fuslogvw。现在,当我启用融合日志记录时,它告诉我无法找到CppCodeProviderVJSharpCodeProvider。所以,我认为这些是导致错误的原因。 QED。

他们没有。融合无法确定它们对ASP.NET网站的执行没有任何影响。 了解这一点,互联网搜索者!它是一个红鲱鱼!

当我做了应该从头开始做的事情时我想到了这一点 - 我在服务器上删除Process Monitor,设置过滤器以观察w3wp进程以尝试加载DLL,等待FILE NOT FOUND。

我在我的开发机器上找到了msvc71.dll的副本(Sql Server有它)并将其放在虚拟机的system32上。我所要做的只是允许网络服务读取和执行DLL的权限,一切都恢复正常。