防止在IIS中加载特定的dll

时间:2012-08-14 18:40:19

标签: c# c++ iis-7

我遇到了常见错误:

  

无法加载文件或程序集“...”或其依赖项之一。该   无法找到指定的模块。

问题是这个dll引用了非托管dll,所以它永远无法正常加载。我只是想让IIS忽略这个文件。

我正在使用web.config中的<remove assembly>标记,但没有运气。

关于如何阻止我的一个dll加载的任何建议?

2 个答案:

答案 0 :(得分:2)

虽然我无法找到限制特定程序集的方法,但我能够通过删除所有程序集并添加我需要的特定程序集来完成它。将web.config文件更改为:

<system.web>
    <compilation targetFramework="4.0">
        <assemblies>
            <remove assembly="*"/>
            <add assembly="example.dll"/>
        </assemblies>
    </compilation>
</system.web>

答案 1 :(得分:1)

.Net运行时不会加载程序集以获得乐趣。它只在需要时才这样做 - 即你正在积极地使用该程序集中的类/方法。只要不执行使用它们的代码,您甚至可以引用不存在的程序集。

因此,防止加载程序集不会使您的应用程序工作 - 即删除程序集并看到您的应用程序因缺少依赖性而崩溃。

如果你以某种方式自己加载程序集(比如Assembly.Load),那么你需要弄清楚如何跳过这些程序集......