访问第三方库中的web.config文件

时间:2009-09-29 10:54:59

标签: c# asp.net-mvc configuration

我正在编写一个IHttpFilter,它需要在一个单独的项目中(这些都是C#项目)才能在一组ASP.NET MVC应用程序中使用。在IHttpFilter中,我必须确定web.config文件中指定的一些内容。

有没有办法在运行时从外部程序集中检索当前的web.config文件?我需要获得三种设置(字符串)。

另一个问题是我需要引用一堆文件(图像),但我不确定是将它放在ASp.NET MVC应用程序还是IHttpHandler项目中。

2 个答案:

答案 0 :(得分:1)

从外部程序集我明白你的意思是由Web应用程序引用的另一个项目生成的程序集。

在运行时,您的Web应用程序将检索其整个配置,包括由引用的程序集检索的配置 - 来自Web应用程序的web.config。您不必更改IHttpHandler代码中的任何内容。

因此,在设计时,您可能应该在每个项目的配置文件上设置这些设置,在运行时,所有引用的项目配置文件应该合并到Web应用程序的web.config文件中

关于图像:在我完成的小测试中,我将图像放在引用的项目中,将它们设置为内容并始终复制到输出目录。当程序集像我预期的那样被复制到Web应用程序的bin文件夹时,图像不会被复制到除了它们自己的项目输出目录之外的任何地方。

因此,为了简单起见,我会将图像放在Web应用程序项目中的适当文件夹中。

答案 1 :(得分:0)

以下是我最近编写的一些代码,用于从另一个进程打开web.config文件:

var configFile = new FileInfo(configPath);

WebConfigurationFileMap map = new WebConfigurationFileMap();

var appBase = 
    new VirtualDirectoryMapping(configFile.DirectoryName, true, configFile.Name);
map.VirtualDirectories.Add("/", appBase);

return WebConfigurationManager.OpenMappedWebConfiguration(map, "/");

configPath参数只是一个包含web.config路径的字符串。