Ho trovato un'altra domanda pubblicata qui che forniva una soluzione alla prima parte della mia domanda, cioè come generare una pagina 404 in ASP.NET MVC SENZA reindirizzamento in un'altra pagina (quindi l'url originariamente richiesto rimane nella barra degli indirizzi).Lanciare un 404 come StackOverflow, senza reindirizzamento, quando si utilizza IOCControllerFactory
ASP.NET MVC - How to throw a 404 page similar to that on 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));
}
}
Il lato 404 delle cose funziona bene per me, se io non uso un IOCControllerFactory, ma non appena ho faccio utilizzare una fabbrica, il codice di errore in global.asax
non è usati e invece io ottenere il seguente errore:
The IControllerFactory 'MyNamespace.IOCControllerFactory' did not return a controller for the name 'blah'.
Come faccio ad avere intorno a questo, senza ricorrere a sbarazzarsi della mia ControllerFactory, e la creazione di un costruttore senza parametri per ciascuno dei miei contr Ollers?
Sede [questo post] (http://stackoverflow.com/questions/619895/how-can-i-properly-handle-404-in-asp-net-mvc/7967759#7967759), che è un esempio di una soluzione di pagina di errore 404 personalizzata che utilizza gli attributi di filtro ASP.Net MVC. Questa soluzione evita anche i messaggi 302/200 nel browser. Il browser ottiene una risposta 404. –