如何在 web.config 之外的 ASP.Net 中保留连接字符串?

How can I persist a connection string in ASP.Net outside of web.config?

我有一个 ASP.NET MVC 应用程序,我将其作为 zip 文件分发给客户。然后他们将其提取到他们的服务器上。一切都存储在 SQL 数据库中,但我需要保存连接字符串,如果它存储在 web.config 中,它将被覆盖,他们只是复制所有文件。当前的实现使用连接字符串在站点目录中创建一个简单文件,但在某些情况下,应用程序池标识没有写入文件系统的权限。

我首先想到的是注册表,但听起来我会 运行 进入类似的权限问题。是否有保证我可以访问的目录?另一种选择是让安装程序执行此操作,但我宁愿不必编写安装程序。

有什么我忽略的吗?

您可以使用 configSource 从不同的配置文件加载它,在部署更新时您永远不会覆盖它。

如果您希望客户在初始设置时手动写入该文件,则此方法有效。

如果您希望他们将连接字符串输入 UI,注册表(仅在 HKCU 中)应该没问题;无论文件系统权限如何,您应该(几乎)始终有权写入用户注册表。