Skip to main content
 首页 » 编程设计

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

2024年01月22日35kuangbin

考虑一个 ASP.NET MVC 应用程序,该应用程序依赖于不适合存储在 web.config 中的配置数据。

这些数据主要是自由文本,例如在 Web 应用程序启动时加载的文档模板和标记。它被认为不适合 web.config 存储,因为它非常大。

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

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

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

    编辑 :

    到目前为止提供的答案很好,但让我详细说明这里的条件,以便我们更接近解决方案。这是一个网络应用程序,感兴趣的人将下载并安装在他们自己的网络服务器上。这些人可能希望定制应用程序的某些方面。 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 一起使用。编写一个单独的帮助应用程序,或者包括 Controller 和 View 来管理数据库中的这些配置并不真正适合应用程序的设计路径;这可能是我自己的错,没有早点想到。要求用户在 Management Studio 中更正这些字段也不是跳过编写 UI 的可接受方式。

    文件系统上的存储

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

    资源中的存储

    我真的不能对这种方法提出任何提示。我们将不得不讨论重新编译应用程序以更新配置是否可以。

    请您参考如下方法:

    还有另一种选择 - 资源,这将为您提供数据访问的内置机制,但需要在每次文本更改时重新编译您的应用程序。
    存储此类数据的最佳方式是数据库,但如果您不想将数据库连接到您的应用程序 - 使用文件。文件访问将很容易在网络服务器级别进行管理,所以这应该不是问题。