【问题标题】:Accessing a web.config file in a third party library访问第三方库中的 web.config 文件
【发布时间】:2010-12-02 06:54:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# asp.net-mvc configuration


    【解决方案1】:

    从外部程序集,我了解到您的意思是由 Web 应用程序引用的另一个项目生成的程序集。

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

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

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

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

    【讨论】:

    • 是的!这就是我想要实现的 - 访问 web.config 的外部程序集。不过,我仍然不确定如何访问 Web 配置文件。我不能使用设置。*可以吗?
    • 是的,你可以。您在引用的程序集上创建一个 app.config 文件并使用 IDE 创建 Settings.* 类。然后将 app.config 上的配置合并到 web.config 上的相应部分。
    【解决方案2】:

    这是我最近编写的一些代码,用于从另一个进程打开 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 路径的字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2020-03-31
      相关资源
      最近更新 更多