Я вижу странные проблемы после развертывания сайта. Я уточнял пользовательские ошибки контроллера & представление в Global.asax.cs, используя следующие:Проблемы с представлением ошибок MVC при развертывании сайта
protected void Application_Error(object sender, EventArgs e)
{
var httpContext = ((MvcApplication)sender).Context;
var currentController = " ";
var currentAction = " ";
var currentRouteData = RouteTable.Routes.GetRouteData(
new HttpContextWrapper(httpContext));
if (currentRouteData != null)
{
if (currentRouteData.Values["controller"] != null
&& !String.IsNullOrEmpty(currentRouteData.Values["controller"].ToString()))
{
currentController = currentRouteData.Values["controller"].ToString();
}
if (currentRouteData.Values["action"] != null
&& !String.IsNullOrEmpty(currentRouteData.Values["action"].ToString()))
{
currentAction = currentRouteData.Values["action"].ToString();
}
}
var ex = Server.GetLastError();
var controller = new ErrorController();
var routeData = new RouteData();
var action = "Index";
if (ex is HttpException)
{
var httpEx = ex as HttpException;
switch (httpEx.GetHttpCode())
{
case 404:
action = "NotFound";
break;
// others if any
}
}
if (ex is NisSessionExpiredException)
{
action = "SessionExpired";
}
httpContext.ClearError();
httpContext.Response.Clear();
httpContext.Response.StatusCode = ex is HttpException
? ((HttpException)ex).GetHttpCode()
: 500;
httpContext.Response.TrySkipIisCustomErrors = true;
routeData.Values["controller"] = "Error";
routeData.Values["action"] = action;
controller.ViewData.Model = new HandleErrorInfo(ex, currentController, currentAction);
((IController)controller).Execute(
new RequestContext(new HttpContextWrapper(httpContext), routeData));
}
Это отлично работает локально, но после развертывания на сервере, при возникновении ошибки снова использует указанный контроллер & действие, но он всегда возвращается:
System.InvalidOperationException: вид «Error» или его хозяин не найден или нет вида двигателя не поддерживает искомых местоположение. Были найдены: : ~/Views/Draft/Error.aspx ~/Views/Draft/Error.ascx ~/Views/Shared/Error.aspx ~/Views/Shared/Error.ascx ~/Просмотры/Проект /Error.cshtml ~/Views/Проекты/Error.vbhtml ~/Просмотров/Shared/Error.cshtml ~/Просмотров/Shared/Error.vbhtml в System.Web.Mvc.ViewResult.FindView (ControllerContext контекст) в System.Web.Mvc.ViewResultBase.ExecuteResult (Контекст ControllerContext) по адресу System.Web.Mvc.Async.AsyncControllerActionInvoker. <> c__DisplayClass25.b__22 (IAsyncResult asyncResult) в System.Web.Mvc.Controller. <> c__DisplayClass1d.b__18 (IAsyncResult asyncResult) в System.Web.Mvc.Async.AsyncResultWrapper. <> c__DisplayClass4.b__3 (IAsyncResult ar) в System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) в System.Web.Mvc.Async.AsyncResultWrapper. <> c__DisplayClass4.b__3 (IAsyncResult ar) по адресу System.Web.Mvc.MvcHandler. <> c__DisplayClass8.b__3 (IAsyncResult asyncResult) в System.Web.Mvc.Async.AsyncResultWrapper. <> c__DisplayClass4.b__3 (IAsyncResult аг) в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() на System.Web.HttpApplication.ExecuteStep (IExecutionStep шаг, Логическое & completedSynchronously)
вместо ожидаемых ошибок (как вы можете видеть выше, представление об ошибке должно предоставить мне подробную информацию о том, что такое исключение, а также стек вызовов). По моему мнению, это мнение никогда не должно было вызываться (а также оно никогда не вызывается локально).