Если пользователь вошел в систему и перешел на действительную страницу, он переходит на страницу, как и ожидалось.
Если пользователь вошел в систему и перешел на неверную страницу, он переходит к NotFound.cshtml, как и ожидалось.
Если пользователь не вошел в систему и перешел на недопустимую страницу (например, http://dev.apphost.mycompany.com/my_app_path/hgfhfhjgfhf),, он переходит на Unauthorized.cshtml, как и ожидалось.
Если пользователь не вошел в систему и перешел на действительную страницу, я ожидаю, что он перейдет на Unauthorized.cshtml. Вместо этого, когда я пытаюсь в Firefox, страница пуста. Когда я пытаюсь в Chrome:
Эту страницу dev.apphost.mycompany.com невозможно найти
Веб-страница для адреса не найдена:
http://dev.apphost.mycompany.com/my_app_path/
HTTP ОШИБКА 404
... Почему?
Кроме того, такое поведение происходит только после публикации. При запуске с localhost все работает нормально.
Вот мой ErrorController:
[AllowAnonymous]
public class ErrorController : Controller
{
private readonly IActiveUserService _activeUserSrv;
public ErrorController(IActiveUserService activeUserSrv)
{
_activeUserSrv = activeUserSrv;
}
[Route("error/not-found")]
public ActionResult NotFound()
{
var currUser = _activeUserSrv.GetActiveInternalUser();
if (currUser == null)
{
return View("Unauthorized");
}
else
{
return View();
}
}
[Route("error/unauthorized")]
public ActionResult Unauthorized()
{
return View();
}
}
Редактировать: По запросу я включу метод контроллера входа. Доступ к нему осуществляется из unauthorized.cshtml (и поэтому он не используется, так как моя проблема в том, что я не могу получить в unauthorized.cshtml).
[Authorize]
public class AccountController : Controller
{
private readonly IAccountService _accountService;
public AccountController(IAccountService srv)
{
_accountService = srv;
}
[Route("manualLogin")]
[AllowAnonymous]
public ActionResult ManualLogin(string username, string password)
{
var env = GetEnvFromHost();
return _accountService.InternalManualLogIn(username, password, env)
? (ActionResult)RedirectToAction("Index", "Home")
: new HttpStatusCodeResult(statusCode: 401);
}
...
}