Asp.net .NET Web应用程序应将其存储在何处';s(非数据库)设置
我正在构建一个将被多次安装的Web应用程序。应用程序需要能够根据请求保存某些设置本身 我有一个安装程序(InnoSetup),但我想非常小心我给Web应用程序的权限Asp.net .NET Web应用程序应将其存储在何处';s(非数据库)设置,asp.net,.net,inno-setup,Asp.net,.net,Inno Setup,我正在构建一个将被多次安装的Web应用程序。应用程序需要能够根据请求保存某些设置本身 我有一个安装程序(InnoSetup),但我想非常小心我给Web应用程序的权限 我不能使用数据库 默认安装总是将web.config保留为只读。(最安全) 注册表可能有问题。除非有一组密钥,否则DotNet webapp在默认情况下始终可以写入(IIS_IUSR) 我正在考虑App_数据,但默认权限不再有用,Inno安装程序无法轻松正确修复它: 安全性和易安装性都是大问题 我也不想把我安装的机器弄得一团糟
- 我不能使用数据库李>
- 默认安装总是将web.config保留为只读。(最安全)
- 注册表可能有问题。除非有一组密钥,否则DotNet webapp在默认情况下始终可以写入(IIS_IUSR)
- 我正在考虑App_数据,但默认权限不再有用,Inno安装程序无法轻松正确修复它:
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);
但我发现,在Server2012和其他可能的服务器上,默认情况下也不允许向HKEY_当前_用户写入内容。服务器错误页面很有帮助,并提供了一些选项,例如显式授予IUSR_{MachineName}显式权限,但这对我来说是不可能的
因此,我的最终解决方案是让安装程序创建一个用户可配置的文件夹,然后将所有用户的读/写权限分配给该文件夹。如果管理员愿意,他们总是可以更多地锁定它
如果有人有更好的选择,请告诉我。使用InnoSetup,我创建了一个新的向导页面,向用户建议并收集数据文件夹。安装程序然后:
- 创建了该文件夹并授予所有用户读/写权限
- 添加了一个HKLM注册表项,告诉Web应用在何处查找文件夹
- 通知用户应进一步锁定文件夹以防止滥用