当数据对于web.config来说太大时该怎么办

时间:2011-08-27 06:44:51

标签: c# asp.net asp.net-mvc

考虑一个ASP.NET MVC应用程序,它依赖于配置数据,这对于web.config中的存储来说并不理想。

此数据主要是自由文本,例如文档模板和Web应用程序启动时加载的标记。它被认为是web.config存储的理想选择,因为它非常大。

到目前为止存储的想法是:

  • 存储在数据库中:理想的可扩展性和对HTTP请求的保护。但是,需要额外的应用程序代码来管理数据。
  • 存储在文件系统:非常适合可交换文件但对HTTP请求敏感。

你是如何解决这个问题的?

修改

到目前为止提供的答案很棒,但让我详细说明这里的条件,以便我们更接近解决方案。这是一个Web应用程序,将由感兴趣的人下载并安装在他们自己的Web服务器上。这些人可能希望定制应用程序的某些方面。 web.config文件适用于许多方面:SMTP服务器设置,连接字符串和其他名义值。

但是,该应用程序还采用了较重的配置,例如一系列文件模板 - 用HTML编写和简单的特定于域的标记。其中一些有点大。

在web.config中存储

将此数据存储在web.config中将需要一些非常重要的配置元素。我的自定义部分中的元素可能看起来像这样:

<template key="..."><![CDATA[
    (very large text here)
]]></template>

我不知道如何在这个庄园中利用web.config ConfigurationElement的'InnerText'。也许是olde的IConfigurationSectionHandler。

数据存储中的存储

SQL Server 2008与Entity Framework 4一起使用。编写一个单独的帮助应用程序,或包含控制器和视图来管理数据库中的这些配置并不真正适合应用程序的设计路径;这可能是我自己的错,因为我没有提前考虑过它。要求用户在Management Studio中更正这些字段也不是跳过编写UI的可接受方式。

存储在文件系统上

将数据放在文件系统上的一个或多个文件中,可以在主机上轻松访问,或多或少地消除了对UI或Management Studio的需求。但是,HTTP请求不能访问这些文件。 Web.config受IIS保护,这些文件需要类似的保护。

在资源中存储

我无法用这种方法提出任何投诉。我们将不得不重新编译应用程序以更新配置是否正常。

3 个答案:

答案 0 :(得分:4)

还有另一个选项 - 资源,这将为您提供数据访问的内置机制,但需要在每次文本更改时重新编译您的应用程序。

存储此类数据的最佳方法是数据库,但如果您不想将数据库连接到您的应用程序 - 请使用文件。文件访问将很容易在网络服务器级别进行管理,因此不应该是一个问题。

答案 1 :(得分:2)

您可以创建单独的文件并将其与web.config链接。

这里显示了如何使用web.config链接多个文件。

http://www.davidturvey.com/blog/index.php/2009/10/how-to-split-the-web-config-into-mutliple-files/

答案 2 :(得分:2)

从未来的前景看问题,而不是从现在的状态。

如果要扩展 AND ,您需要在内容中搜索最佳选择是数据库 - 它是为它创建的

如果它不会,你只需要向用户显示它的内容,那么文件系统就足够了。

HTH

Ivo Stoykov