首页新闻找找看学习计划

使用Forms认证的Web应用程序,在IIS8 Express下运行时不会自动跳转到登录页

0
悬赏园豆:100 [已关闭问题] 关闭于 2013-05-31 17:57

我的应用程序使用Forms认证,Web.Config中认证部分配置如下

<authentication mode="Forms">
    <forms name="MyMVC.ASPXFORMAUTH" cookieless="UseCookies" defaultUrl="/" loginUrl="/Logon" timeout="2880">
    </forms>
</authentication>

在应用程序的某些Http处理程序中,如果验证用户未登录就发送401影响到客户端

/// <summary>
/// 发送401响应到客户端
/// <para>未授权</para>
/// </summary>
public void Response401()
{
    Response.StatusCode = 401;
    Response.StatusDescription = "Unauthorized";
    Response.End();
}

这种方法在使用VS10的开发服务器或者iis 6部署的时候,每次调用“Response401”方法都会使客户端跳转到配置里面指定的LoginUrl,Fiddler抓包显示这个Url返回的是302,这正是我需要的。

但是在IIS7.5和IIS8Express中部署的时候,却是直接响应401.0错误代码,而客户端只接显示401.0的错误页面,而不是跳转到登录链接。

这是为何?是不是在IIS7以上的版本中部署,要做什么特殊的配置呢?如何解决?

shalves的主页 shalves | 菜鸟二级 | 园豆:206
提问于:2013-05-31 14:37
< >
分享
所有回答(1)
0

自己解决了!

原因:

应用程序(3.5SP1)在从迁移IIS6迁移到IIS7.5+的时候导致了Forms认证失效,开始光注意到401不会跳转的问题,后来才发现原来登录都不成功。

解决办法:

在Web.Config文件的system.webServer节添加下面两句就可以了。

<remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
shalves | 园豆:206 (菜鸟二级) | 2013-05-31 17:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册