2

IIS 或 IIS Express 下的 C#、VS2010、.Net 4.0、ASP.NET 服务。

我在我的服务中使用了第 3 方集会。这个第 3 方程序集有一个 .config 文件,并且是这样动态加载的:

服务 -> MyAssembly1 -> 使用 Assembly.Load() 动态加载 MyAssembly2 -> 使用 .config 的第 3 方程序集

我通常是一名 C++ 开发人员,所以这个 ASP.NET 东西对我来说相当新。我知道,对于 ASP.NET 应用程序,它使用的程序集被“影子复制”到 Temporary ASP.NET Files 文件夹。不幸的是,当这个第 3 方程序集被“影子复制”时,它的 .config 文件不是。因此,当需要使用此程序集时,它会失败,因为它无法打开其 .config 文件。

从我的程序集中,我可以获取该程序集的 CodeBase 并自己加载 .config 文件,但这对我没有帮助,因为这个第 3 方程序集需要自己打开文件。

如果我手动将 .config 文件复制到卷影复制位置,效果很好。

此外,这个第 3 方将配置文件称为“assemblyname.config”而不是“assemblyname.dll.config”。

我得到的错误是:

Unable to load configuration file: "\assemblyname.config".

当在非 ASP.NET 应用程序(即普通的 Windows 应用程序)中使用此第 3 方程序集时,它工作得很好,因为它不执行卷影复制的东西。只需直接从 exe 位置使用程序集和 .config 文件。

有任何想法吗?尽管我认为这将是一个相当普遍的问题,但我一直无法找到解决方案。

4

1 回答 1

0

加载程序集时的主要内容是查看程序集在磁盘上的放置路径以及您尝试从中加载程序集的页面目录。因此,如果您要添加加载程序集的路径,这并不意味着它将从同一路径加载配置文件。请尝试将它们都放在应用程序的根文件夹中,看看问题是否仍然存在。

于 2013-04-10T12:59:12.847 回答