我差不多完成了将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;时,我被重定向到原始页面。问题是,重定向后,我没有登录 - 导航栏仍然显示我的登录按钮而不是登出按钮,我无法与任何授权的控制器进行交互。
我知道这是一个含糊不清的超级模糊问题,但我不确定从哪一个开始。我希望有人可以看到我的问题是什么,并指出我正确的方向,或者至少能够建议我可以采取一些步骤来隔离并尝试调试问题。或者,除非有一些提示,我可以在我的问题中添加哪些信息以提供必要的细节。
谢谢!
答案 0 :(得分:3)
您可以尝试两个起点: