Asp.net MVC Form认证,IIS改为集成模式后,FormsAuthentication.SetAuthCookie无效,Request.IsAuthenticated值,始终为false,

最近公司领导要求,IIS网站要由经典模式改成集成模式,以提升性能。改完以后,登陆成功跳转到主页以后,页面提示“”HTTP 错误 401.0 - Unauthorized“,“您无权查看此目录或页面”,截图以下:web

网上找了不少资料,都无法解决。先看看个人网站IIS配置目录:cookie

IIS配置为网站,其中网站根目录下,还有个子应用程序,咱们假设网站应用程序名为WebSite,子应用程序名为Portal,其中WebSite网站对应的文件夹下有Web.config,Portal子应用程序对应的文件夹下也有web.config。而WebSite文件夹下的web.config为根目录配置文件,且配置了form认证,配置以下:less

<authentication mode="Forms">
     <forms cookieless="UseCookies" loginUrl="/Portal/Account/Login" protection="None" timeout="120"></forms>
</authentication>

 按里说,这里配置了form认证,登陆成功就能够跳转到主页,但事实上并不是如此,一直提示上面的报错。后来看了网上的一片帖子,找到了答案:性能

https://stackoverflow.com/questions/19536955/request-isauthenticated-is-always-false网站

其中Ger Groot给出答案中,解决了个人问题:spa

 

<modules>
  <remove name="FormsAuthentication" />
  <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
</modules>

原来只须要在个人子应用程序web.config文件中,system.webServer目录下,添加以上代码就好了,问题解决。code

后来再仔细思索了一下,发现orm

<remove name="FormsAuthentication" />

这段本来就在子应用程序web.config配置中存在,莫非就是由于这个致使子应用程序portal没有权限?索性去掉这句,也无需添加blog

<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />

问题获得解决。rem

相关文章
相关标签/搜索