Mam ASP.NET MVC 1.0, która serwuje jakieś treści z 2 hierarchii poziom /kategorii/artykułJak obsłużyć polecenie "Nie znaleziono" InvalidOperationException w asp.net mvc?
Kiedy wszystko działa prawo mapy artykuł do widzenia, a widok zostanie wygenerowana. Jednakże, gdy adres URL spełnia warunek routingu, ale widok nie istnieje, zgłaszany jest wyjątek, którego nie można przechwycić w działaniu kontrolera.
Routing:
routes.MapRoute(
"Article",
"{category}/{article}.aspx",
new { controller = "MyController", action = "Article" }
);
MyController Działanie:
public ActionResult Article(string category, string article)
{
string path = string.Format("~/Views/{0}/{1}.aspx", category, article);
ViewResult vr = View(path);
return vr;
}
Jednak, gdy widok nie zostanie znaleziony, System.InvalidOperationException
generowany jest, że nie mogę złapać w działaniu sterownika.
Szczegóły wyjątku: System.InvalidOperationException: widok '~/Views/my-kategoria/my-Art-z-długim name.aspx' nie można znaleźć lub jego mistrza . Poniższe lokalizacje były wyszukiwane: ~/Views/my-kategoria/my-Art-z-długim name.aspx
mogę pułapka błąd w metodzie Application_Error()
w global.asax.cs
ale:
- Nie wiem, jak przekierować do widoku błędu stamtąd
- Zastanawiam się, czy istnieje lepsze miejsce bliżej miejsca, w którym został zgłoszony wyjątek .
Próbowałem i podoba mi się rozwiązanie. Jedynym problemem jest to, że jeśli otrzymasz wyjątek InvalidOperationException z innego powodu, spowoduje to 404. Wystąpił taki wyjątek, gdy próbuję serializować coś. – Bealer