.NET Web 应用程序应该在哪里存储它的(非数据库)设置

Where should a .NET Web Application store it's (non database) setting

我正在构建一个将被多次安装的 Web 应用程序。应用程序需要能够根据请求自行保存某些设置。

我有一个安装程序 (InnoSetup),但我想非常小心我授予 Web 应用程序的权限。

安全性和易于设置都是大问题..

我也不想弄乱我安装的机器。

A FAILED 解决方案是写入注册表的用户部分:

Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\MyCo\MyApp\");
var reg = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\MyCo\MyApp", true);
reg.SetValue("MyValue", (string)dataString, Microsoft.Win32.RegistryValueKind.String);

但我发现在 Server 2012 和其他服务器上默认情况下也不允许写入 HKEY_CURRENT_USER。服务器错误页面很有帮助,并提供了一些选项,例如明确授予 IUSR_{MachineName} 显式权限,但这对我来说是不行的。

所以我的最终解决方案是让安装程序创建一个用户可配置的文件夹,然后为所有用户分配 Read/Write 访问该文件夹的权限。如果需要,管理员可以随时将其锁定更多。

如果有人有更好的选择,请告诉我。

我使用 InnoSetup 创建了一个新的向导页面来建议和收集用户的数据文件夹。然后安装程序:

  • 已创建该文件夹并授予所有用户 Read/Write 访问权限,
  • 添加了一个 HKLM 注册表项,告诉 Web 应用程序在哪里查找文件夹,
  • 通知用户他们应该进一步锁定文件夹以防止滥用。