即时通讯使用visual studio 2008.在我的项目中使用表单身份验证,我的项目结构如下
root
|
login.aspx
home.aspx
web.config
admin (folder)
|
admin.aspx
web.config
这里的root web.config如下
<authentication mode="Forms">
<forms name="Authen" protection="All" timeout="60" loginUrl="Login.aspx" enableCrossAppRedirects="true" cookieless="AutoDetect"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
和内部web.config
我的用户是 用户名角色 admin1管理员 admin2管理员 user1用户 user2用户
正如您所看到的那样,在第二个web.config中,我为具有“Admin”角色和“user1”用户的用户提供了访问权限。
为了访问“admin”文件夹,我写了以下内容:
Configuration config = WebConfigurationManager.OpenWebConfiguration("~/HR");
SystemWebSectionGroup systemWeb = (SystemWebSectionGroup)config.GetSectionGroup("system.web");
AuthorizationSection section = (AuthorizationSection)systemWeb.Sections["authorization"];
AuthorizationRule newRule = new AuthorizationRule(AuthorizationRuleAction.Allow);
newRule.Users.Add("user1");
section.Rules.Add(newRule);
并将web.config保存为
config.Save();
当我从visual studio开发服务器运行它时工作正常,当我在IIS中托管它时,我得到以下错误
配置错误 描述:处理为此请求提供服务所需的配置文件时发生错误。请查看下面的具体错误详细信息并相应地修改配置文件。
分析程序错误消息:加载配置文件时出错:拒绝访问路径“F:\ dotnet \ samples \ myproj \ UI \ hr \ f-q_g-yn.tmp”。
来源错误:
[没有相关的源代码行]
源文件:F:\ dotnet \ samples \ myproj \ UI \ hr \ web.config行:0
这里的问题是,它无法保存web.config
我有一个解决方案,就是我添加了
<identity impersonate="true" userName="myusername" password="mypassword"/>
到root web.config,它运行正常。但我的老板说这不是正确的方法。解决这个问题的正确方法是什么? 请帮忙
答案 0 :(得分:2)
您网站运行的帐户无权写入您的web.config所在的目录。有两种方法可以解决这个问题:
您可能应该将这两种方法结合使用 - 使用单独的用户帐户并仅将写入权限添加到此帐户,而不是例如网络服务。
(但请注意,我不确定网站是否修改自己的web.config文件是一个好主意。)