考虑一个 ASP.NET MVC 应用程序,该应用程序依赖于不适合存储在 web.config 中的配置数据。
这些数据主要是自由文本,例如在 Web 应用程序启动时加载的文档模板和标记。它被认为不适合 web.config 存储,因为它非常大。
到目前为止,关于存储的想法是:
你是如何解决这个问题的?
编辑 :
到目前为止提供的答案很好,但让我详细说明这里的条件,以便我们更接近解决方案。这是一个网络应用程序,感兴趣的人将下载并安装在他们自己的网络服务器上。这些人可能希望定制应用程序的某些方面。
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 的保护,这些文件也需要类似的保护。
资源中的存储
我真的不能对这种方法提出任何提示。我们将不得不讨论重新编译应用程序以更新配置是否可以。
请您参考如下方法:
还有另一种选择 - 资源,这将为您提供数据访问的内置机制,但需要在每次文本更改时重新编译您的应用程序。
存储此类数据的最佳方式是数据库,但如果您不想将数据库连接到您的应用程序 - 使用文件。文件访问将很容易在网络服务器级别进行管理,所以这应该不是问题。
