का उपयोग करते समय, रीडायवर के बिना 404 फेंकना, मुझे एक और प्रश्न मिला, जिसने मेरे प्रश्न के पहले भाग का समाधान प्रदान किया, यानी रीडायरेक्टिंग के बिना एएसपी.नेट एमवीसी में 404 पेज कैसे उत्पन्न करें दूसरे पृष्ठ पर (इसलिए मूल रूप से अनुरोध किया गया यूआरएल पता बार में रहता है)।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));
}
}
चीजों में से 404 की ओर से मेरे लिए ठीक काम करता है अगर मैं के रूप में मैं कर एक IOCControllerFactory का उपयोग नहीं करते, लेकिन जैसे ही एक कारखाने का उपयोग करें, global.asax
में त्रुटि कोड नहीं है इस्तेमाल किया और इसके बजाय मैं निम्न त्रुटि:
The IControllerFactory 'MyNamespace.IOCControllerFactory' did not return a controller for the name 'blah'.
मैं इस के आसपास मिलता है, मेरे contr से प्रत्येक के लिए मेरी controllerfactory से छुटकारा पाने का सहारा है, और बनाने के लिए एक parameterless निर्माता के बिना ollers?
सी [इस पोस्ट] (http://stackoverflow.com/questions/619895/how-can-i-properly-handle-404-in-asp-net-mvc/7967759#7967759) है, जो ASP.Net MVC फ़िल्टर विशेषताओं का उपयोग कर कस्टम 404 त्रुटि पृष्ठ समाधान का एक उदाहरण है। यह समाधान ब्राउज़र को 302/200 संदेशों से भी बचाता है। ब्राउज़र को 404 प्रतिक्रिया मिलती है। –