您的位置:首页 > 其它

WebConfig 配置 登陆界面显示图片

2010-11-29 17:15 302 查看
今天偶然发现一个怪现象, 一个旧项目在我本地运行时, 登录页面的图片怎么都显示不出来, 经仔细验证, 功能不受影响, 并且登录以后的图片都可以正确显示. 而且, 只有在VS内置的Web server上无法显示, 如果挂在IIS上, 是可以显示的.

我并不相信是VS那个web server的bug, IIS虽然可以显示, 大约是因为IIS的各种规则比较宽松. 所以项目肯定是有问题的. 经过测试, 发现把验证模式改为Windows, 则登录图片可以显示, 改回Forms则不行. web.config配置如下:

<authentication mode="Forms">

<forms name=".ASPPLUS" protection="All" loginUrl="login.aspx" timeout="40" path="/">

</forms>

</authentication>

经过一番推测, 大概跟protection="All" 有关, 再看一下

<authorization>

<deny users="?"/>

</authorization>

猜测肯定是权限问题, 于是把deny改成<allow users="*"/>, 再一试, 果然好了.

总结一下问题, 想到原因肯定是加载图片时, 发现还未登录, 所以拒绝访问, 这样图片就无法显示, 而登录以后则所有图片都可以正常显示. 既然知道了原因, 只要将images目录设为不需要验证即可:

首先把<authorization>节改回deny, 确保其它页面不能被非法访问, 然后在web.config中增加对images目录的特殊配置:

<location path="Images">

<system.web>

<authorization>

<allow users="*"/>

</authorization>

</system.web>

</location>

这样, 就允许了images目录随时被访问, 并且其它目录需要登录后才能访问. 重新测试, ok.

Response.Redirect(Request.ApplicationPath+"Front.aspx");

转载地址:http://moosdau.blog.163.com/blog/static/43711282010101510424219/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: