【问题标题】:IIS cannot load global type despite of existing dll尽管存在 dll,但 IIS 无法加载全局类型
【发布时间】:2012-10-31 14:01:52
【问题描述】:

我正在尝试让应用程序在分配给我支持的 IIS 6.0 上运行。

我将所有源代码和二进制文件复制到 Inetput 文件夹。 WebApp 正在运行,但我收到错误消息,提示无法加载应用程序的全局类型。

我该如何调试呢?命名空间正确,DLL在应用程序的/bin/文件夹下,应用程序仍然无法加载。

开启 Fusion 日志记录后,我发现这个错误文件与我的全局类有关;

*** Assembly Binder Log Entry  (05.11.2012 @ 08:45:30) ***

The operation failed.
Bind result: hr = 0x80131107. No description available.

Assembly manager loaded from:  C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\fusion.dll
Running under executable  c:\windows\system32\inetsrv\w3wp.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = MyApplication
 (Partial)
LOG: Appbase = file:///c:/inetpub/wwwroot/MyApplication
LOG: Initial PrivatePath = bin
LOG: Dynamic Base = C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\MyApplication\a1144233
LOG: Cache Base = C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\MyApplication\a1144233
LOG: AppName = 1ec25e47
Calling assembly : (Unknown).
===

LOG: Processing DEVPATH.
LOG: DEVPATH is not set. Falling through to regular bind.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Post-policy reference: MyApplication
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/MyApplication/a1144233/1ec25e47/MyApplication.DLL.
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/MyApplication/a1144233/1ec25e47/MyApplication/MyApplication.DLL.
LOG: Attempting download of new URL file:///c:/inetpub/wwwroot/MyApplication/bin/MyApplication.DLL.
LOG: Assembly download was successful. Attempting setup of file: c:\inetpub\wwwroot\MyApplication\bin\MyApplication.DLL
LOG: Entering download cache setup phase.
ERR: Error extracting manifest import from file (hr = 0x80131107).
ERR: Setup failed with hr = 0x80131107.
ERR: Failed to complete setup of assembly (hr = 0x80131107). Probing terminated.

那里出了什么问题? bin\MyApplication.DLL 存在且编译正确,所以我看不到问题...

【问题讨论】:

  • 是否有任何 32/64 位问题。你打开fusion logging了吗?
  • 全部编译并运行在 32 位机器和 32 位目标上...
  • 你检查了融合日志选项吗?
  • 我打开了 fusion logging 并收到了错误消息...但这对我没有帮助
  • dll在什么版本的.Net Framwork下运行?因为 IIS 配置为使用 1.1 版?

标签: asp.net .net iis-6


【解决方案1】:

从 cmets 复制解决方案...

第 1 步是启用 Fusion Logging 以获取失败原因的日志

这产生了一个日志文件,表明 IIS 试图在 .Net Framework 1.1 版下启动 DLL。然后当它尝试读取 dll 的清单时发生错误。

这表明 dll 来自更高版本的框架,因此无法加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 2015-07-18
    • 2018-11-30
    • 2014-03-08
    • 1970-01-01
    • 2017-12-09
    相关资源
    最近更新 更多