IIS下的ASP.NET核心应用程序 - 无法保持登录状态

时间:2016-12-22 22:35:33

标签: asp.net-core asp.net-core-mvc

我差不多完成了将ASP.NET Core应用程序从RC1迁移到1.1.0。一切都运行良好,直到我尝试发布应用程序并将其托管在IIS中。

在调试器中,或直接从Kestrel工作,我没有问题。我可以访问我的网站,登录并正常与之互动。

但是,在IIS下,我可以加载网站并正确地重定向到我的登录页面,但是尽管使用正确的凭据登录,我被重定向回主页并且我没有登录。我可以重复这个循环一遍又一遍 - 我正在验证,但IIS / Core中间件的某些部分并没有让我登录。

我的网站使用的是ASP.NET Core Identity,它与RC1默认的VS项目模板大致相同。

的AccountController:

    //
    // POST: /Account/Login
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
    {
        if (ModelState.IsValid)
        {
            var signInStatus = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, false);

            if (signInStatus.Succeeded)
                return RedirectToLocal(returnUrl);
            ModelState.AddModelError("", "Invalid username or password.");
            return View(model);
        }


        // If we got this far, something failed, redisplay form
        return View(model);
    }

不幸的是,我无法对此进行调试,因为VS调试器会挂钩Kestrel,而当从Kestrel本地托管时,这个问题并不存在。我无法将调试程序附加到正在运行的Kestrel进程(由IIS启动) - 我可以附加但我的断点不会附加。

我确信正在调用上面的方法。如果我输入的密码不正确,我的确会看到&#34;无效的用户名和密码&#34;提示。当我成功登录&#34;&#34;时,我被重定向到原始页面。问题是,重定向后,我没有登录 - 导航栏仍然显示我的登录按钮而不是登出按钮,我无法与任何授权的控制器进行交互。

我知道这是一个含糊不清的超级模糊问题,但我不确定从哪一个开始。我希望有人可以看到我的问题是什么,并指出我正确的方向,或者至少能够建议我可以采取一些步骤来隔离并尝试调试问题。或者,除非有一些提示,我可以在我的问题中添加哪些信息以提供必要的细节。

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以尝试两个起点:

  1. 在您的服务器上安装最新的Windows Server Hosting bundle
  2. 单击登录按钮后,监视并比较工作系统和损坏系统之间的流量。您是否在破损的系统上获得了与工作类似的身份验证cookie?