C# asp.net mvc 5有时会将身份验证重定向到帐户/登录,而不是帐户/登录

C# asp.net mvc 5有时会将身份验证重定向到帐户/登录,而不是帐户/登录,c#,asp.net-mvc,asp.net-mvc-5.1,C#,Asp.net Mvc,Asp.net Mvc 5.1,我正在使用Asp.NETMVC5.1.1,面临着这个奇怪的问题。每当我将web应用部署到测试服务器(使用IIS 8.5)时,当前会话都会过期(这很明显),然后它们会重定向到帐户/登录,而不是帐户/登录。正常注销或刷新页面命中正确地将用户带到帐户/登录(这是我在配置中设置的)。但在会话到期后,它显示了这种奇怪的行为。我检查过了,没有对webmatrix.dll的引用。即使是这个问题也没有帮助。请告诉我怎么了。 谢谢 编辑1: <authentication mode="Forms">

我正在使用Asp.NETMVC5.1.1,面临着这个奇怪的问题。每当我将web应用部署到测试服务器(使用IIS 8.5)时,当前会话都会过期(这很明显),然后它们会重定向到帐户/登录,而不是帐户/登录。正常注销或刷新页面命中正确地将用户带到帐户/登录(这是我在配置中设置的)。但在会话到期后,它显示了这种奇怪的行为。我检查过了,没有对webmatrix.dll的引用。即使是这个问题也没有帮助。请告诉我怎么了。 谢谢

编辑1:

<authentication mode="Forms">
    <forms loginUrl="~/Account/Logon" timeout="2880" />
 </authentication>

据我所知,MVC 5附带了新的OWIN/ASP.NET身份验证位。在一个新的MVC 5项目的web.config中,我注意到
FormsAuthenticationModule
被禁用

  <system.webServer>
    <modules>
      <remove name="FormsAuthenticationModule" />
    </modules>
尝试将该路径更改为应用程序的正确路径。或者,您无法使用新的ASP.NET标识位并删除web.config中删除
FormsAuthenticationModule
的行


如果您不使用或不想使用新的身份验证选项,请删除对应用程序根目录下
Startup.cs
文件中
ConfigureAuth()
的调用,并删除web.config中删除
FormsAuthenticationModule
的上述行。这将恢复预期的行为(同样,在不知道您对默认代码进行了多少自定义的情况下)。

我也有同样的问题,您应该检查StartupAuth.cs

这是对我帮助很大的答案:

此外,添加此条目有助于:

为便于将来参考,我将在此处包括相关代码:

<add key="loginUrl" value="~/Account/LogOn" />

public partial class Startup
{
  private void ConfigureAuth(IAppBuilder app)
  {
    var cookieOptions = new CookieAuthenticationOptions
      {
        LoginPath = new PathString("/Account/Login")
      };

    app.UseCookieAuthentication(cookieOptions);
  }
}

公共部分类启动
{
专用void配置身份验证(IAppBuilder应用程序)
{
var cookieOptions=新的CookieAuthenticationOptions
{
LoginPath=新路径字符串(“/Account/Login”)
};
应用程序UseCookieAuthentication(cookieOptions);
}
}

能否在web.config中添加
标记的内容?这很奇怪,尝试在当前项目中搜索“登录”或“帐户/登录”,并勾选“匹配整个单词”选项。如果您的项目中没有“登录”或“帐户/登录”url的引用,可能是IIS中的设置。我已经检查过了,没有发现任何线索。是的,这很奇怪,甚至在本地iis中也表现出这种行为。因此,iis中可能有一些默认设置,但不知道哪些设置以及如何更改这些设置。它可以是iis中的默认.config文件吗?
<add key="loginUrl" value="~/Account/LogOn" />

public partial class Startup
{
  private void ConfigureAuth(IAppBuilder app)
  {
    var cookieOptions = new CookieAuthenticationOptions
      {
        LoginPath = new PathString("/Account/Login")
      };

    app.UseCookieAuthentication(cookieOptions);
  }
}