Выбрасывание 404-го типа StackOverflow без перенаправления при использовании IOCControllerFactory

Я нашел еще один вопрос, размещенный здесь, который предоставил решение для первой части на мой вопрос, например, как создать страницу 404 в ASP.NET MVC БЕЗ перенаправления на другую страницу (так что первоначально запрошенный URL-адрес остается в адресной строке).

ASP.NET MVC - Как сделать выбросить страницу 404, аналогичную странице в StackOverflow

protected void Application_Error(object sender, EventArgs e)
    {
        var exception = Server.GetLastError();

        Response.Clear();
        var httpException = exception as HttpException;
        var routeData = new RouteData();
        routeData.Values.Add("controller", "Error");

        if (httpException != null)
        {
            routeData.Values.Add("action", httpException.GetHttpCode() == 404 ? "NotFound" : "Unknown");

            // clear the error, otherwise, we will always get the default error page.
            Server.ClearError();

            // call the controller with the route
            IController errorController = new ErrorController();
            errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));

        }
    }

. Сторона 404 отлично работает для меня, если я не использую IOCControllerFactory, но как только я использую фабрику, код ошибки в global.asax не используется, и вместо этого я получаю следующую ошибку:

The IControllerFactory 'MyNamespace.IOCControllerFactory ' не вернуть контроллер с именем «бла».

Как мне обойти это, не прибегая к избавлению от моей фабрики контроллеров и создавая конструктор без параметров для каждого из моих контроллеров?

12
задан Community 23 May 2017 в 12:07
поделиться