zoukankan      html  css  js  c++  java
  • Asp.net MVC Form认证,IIS改成集成模式后,FormsAuthentication.SetAuthCookie无效,Request.IsAuthenticated值,始终为false,页面提示HTTP 错误 401.0

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

    网上找了很多资料,都没法解决。先看看我的网站IIS配置目录:

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

    <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给出答案中,解决了我的问题:

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

    原来只需要在我的子应用程序web.config文件中,system.webServer目录下,添加以上代码就行了,问题解决。

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

    <remove name="FormsAuthentication" />

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

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

    问题得到解决。

  • 相关阅读:
    项目总结—jQuery EasyUI- DataGrid使用
    浅谈Dynamic 关键字系列之三(上):ExpandoObject, DynamicObject, DynamicMetaObject
    巧用section在cshtml写入layout中写入head信息 ASP.NET MVC
    ASP.NET MVC Web API 学习笔记---第一个Web API程序
    JSON详解
    【js】JSON.stringify 语法实例讲解
    Linux软件安装方法
    链接文件之硬链接和软链接
    Linux操作系统启动界面(字符or图形界面)的设置及切换方法
    Linux操作系统安装与VMTools的安装
  • 原文地址:https://www.cnblogs.com/wangchao928/p/7851249.html
Copyright © 2011-2022 走看看