【问题标题】:How are .NET assembly references "translated" to file paths?.NET 程序集引用如何“转换”为文件路径?
【发布时间】:2010-08-17 23:47:50
【问题描述】:

我正在尝试对 SBS 2008 服务器上的 Outlook Web Access 的 .NET 2.0 错误进行故障排除。

我得到的错误是:

Exception information: 
Exception type: HttpException 
Exception message: Could not load file or assembly 'Microsoft.Exchange.Data,     
Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its 
dependencies. The system cannot find the file specified. 
(C:\Program Files\Microsoft\Exchange Server\ClientAccess\owa\web.config line 51) 

在 web.config 的第 51 行,我有:

                this is line 51 ---><add assembly="Microsoft.Exchange.Data,
                Version=8.0.0.0,
                Culture=neutral,
                publicKeyToken=31bf3856ad364e35"/>
            <add assembly="Microsoft.Exchange.Data.Storage,
                Version=8.0.0.0,
                Culture=neutral,
                publicKeyToken=31bf3856ad364e35"/>
        </assemblies>

所以在“web.config-ese”中,它如何“知道”Microsoft.Exchange.Data 程序集 .DLL 在哪里,我如何确定这一点以验证文件是否存在?

【问题讨论】:

  • 另外,检查您使用的 Exchange 版本。根据 Web.config 中的参考,它看起来需要程序集的“版本 8.0.0.0”,这听起来像 Exchange 2007。如果您安装的不是 Exchange 2007,它可能无法正常工作。

标签: .net asp.net assembly-resolution


【解决方案1】:

它在 c:\windows\assembly 中的全局程序集缓存 (GAC) 中查找。必须在gac中使用gacutil工具安装,通常通过程序的安装过程安装...

【讨论】:

  • 从 .NET 4.0 开始,还有另一个 GAC 位于 C:\WINDOWS\Microsoft.NET\assembly,用于 .NET 4.0 组件。我不认为 Exchange 会在那里,但对于其他程序集,这是一个很好的第二个地方。
  • 它也可能在应用程序的 bin 文件夹中 :) 但是关于 OWA,我不知道 MS 把它放在哪里。旁注,如果您在安装 OWA 时缺少 DLL,我认为出错的原因不仅仅是简单的糟糕,我不小心删除了该 DLL。
  • 我已经比较了运行中的 SBS 2008 服务器和失败的服务器之间的 owa/bin;没有区别。 C:\windows\assembly 中的 GAC 看起来也一样。
  • @Tommy: 没有删除,前几天电源故障后服务器硬掉了,又恢复了,没有OWA或ActiveSync。我认为 WSUS 有一个挂起的更新/删除或某些东西在它出现故障后从未正确执行,但日志中没有关于安装错误的任何内容,只是在崩溃前 4 或 5 天安装了更新。
  • 奇怪的是,将工作 GAC 与非工作 GAC 进行比较,既没有名为“Microsoft.Exchange.Data”的程序集,也没有它们在 owa/bin 文件夹中的程序集。但是,Exchange Server\bin 目录中有一个,但我不知道它是否在其中查找。可能是时候进行 procmon 了。
【解决方案2】:

在网站中,Web 服务器将在 GAC 和 bin 目录中查找。查看 GAC 中内容的简单方法是右键单击添加引用并查看 dll 是否列在 .NET 选项卡中。

将 dll 添加到 GAC look here 以获取指南。

希望这会有所帮助。

【讨论】:

  • 更简单的方法是导航到C:\windows\assembly 或C:\winnt\assembly
猜你喜欢
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 2014-02-14
  • 2012-01-25
相关资源
最近更新 更多