powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC как обработать исключение
14 сообщений из 14, страница 1 из 1
MVC как обработать исключение
    #37795319
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
нужна ваша помощь...

в двух словах:
есть проект на MVC
в классе ItemController возникает исключение...
и после него вылетает ошибка... а должен быть редирект на 404.aspx через ErrorController .

хотя сделано все по науке, но почему нет редиректа и вместо него вылетает баг
(на строке
Код: c#
1.
if (!model.Item.Path.StartsWith("http:"))

)?

код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
public partial class ItemController : Controller
{

		[HttpGet]
		public virtual ActionResult Index(int id)
		{
			...
			throw new HttpException(404, "Товар не найден");
			
			
			if (!model.Item.Path.StartsWith("http:"))	//здесь уже происходит ошибка
			...
		}
...
}



//класс для обработки ошибок
	[HandleError]
	public partial class ErrorController : Controller
	{
		public virtual ActionResult Index(Exception data)
		{
			string viewName = null;
			int statusCode = 500;

			if (data != null && data is HttpException)
				statusCode = (data as HttpException).GetHttpCode();

			switch (statusCode)
			{
				case 404:
					viewName = MVC.Error.Views._404;
					break;
				case 500:
					viewName = MVC.Error.Views._500;
					break;
				default:
					viewName = MVC.Error.Views.General;
					break;
			}
			Response.StatusCode = statusCode;
			return View(viewName, data);
		}

...
	}

	
	//кусок класса global.asax.cs
	
	public static void RegisterRoutes(RouteCollection routes)
	{
		routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
		routes.IgnoreRoute("favicon.ico");
		#region Catalog/Best/New/Soon

		routes.MapRoute(
				"Error - 404",
				"NotFound",
				new { controller = "Error", action = "NotFound" }
		);
		...
	}



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
	//web.config
	
	...
		<customErrors mode="On" redirectMode="ResponseRedirect" defaultRedirect="Error.aspx">
			<error statusCode="403" redirect="403.aspx"/>
			<error statusCode="404" redirect="404.aspx" />
		</customErrors>
	...




p.s. если содержимое Index из ErrorController запихнуть в Catch, то безусловно все получается, но это костыль, который использовать плохо
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795342
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslash,

текст ошибки мы придумать сами должны?
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795368
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deza,

текст такой:

"HttpException was unhandled by user code"
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795392
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslash,

а иннерксепшен?
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795412
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deza,
в коде он и написан.
компилятор проходит строку
Код: c#
1.
throw new HttpException(404, "Товар не найден");


а на второй затыкается, т.к.
Код: c#
1.
try{..}catch{..} 

не используется, в надежде на то, что отработает ErrorController , а он не работает...
я полагаю, либо что-то в Web.confige не настроено,
либо в Global.asax ...возможно что-то неверно в

routes.MapRoute...

я понятие не имею какие в нем должны быть параметры... и что например этот путь - "{controller}/{action}/{id}" означает..
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795483
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
public ActionResult NotFound()
{
    return HttpNotFound();
}


Код: xml
1.
2.
3.
<customErrors mode="On" redirectMode="ResponseRewrite">
   <error statusCode="404" redirect="/Error404.html" />
</customErrors>
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795518
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYS,

а что за метод HttpNotFound() ?
компилятор, пишет, что метод не определен..
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795521
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslashDeza,


я понятие не имею какие в нем должны быть параметры... и что например этот путь - "{controller}/{action}/{id}" означает..
читать
http://msdn.microsoft.com/ru-ru/library/cc668201
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795603
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYS,

это тоже не работает
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795628
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deza,

а вот тут более человеческим языком написано
http://habrahabr.ru/post/75346/

p.s. как обычно то что в русском 2-3 слова, в иностранном мануале 2-3 предложения.
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795643
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslashSanSYS,

а что за метод HttpNotFound() ?
компилятор, пишет, что метод не определен..
http://msdn.microsoft.com/ru-ru/library/system.web.mvc.controller.httpnotfound(v=vs.98).aspx
видимо версия не та
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795741
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYS,

короче ужас...этот черный ящик...
целый день ищу один баг ... в asp.net давно бы уже нашел..
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37795784
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslashSanSYS,

короче ужас...этот черный ящик...
целый день ищу один баг ... в asp.net давно бы уже нашел..
хм.. по сути вы должны вернуть HttpNotFoundResult("Error - page not found!!!")
Код: c#
1.
2.
3.
4.
public ActionResult NotFound()
{
    return new HttpNotFoundResult("Error - page not found!!!");
}


никто вам не мешает использовать классический Redirect, попробуйте Response.Redirect("/Error404.htm") =)

P.S.: впервый раз вижу явный throw new HttpException(404, "Товар не найден");
...
Рейтинг: 0 / 0
MVC как обработать исключение
    #37796434
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYS,

Спасибо, но код писал не я, мне надо исправить баг....

по сути я научился в Global.asax делать редиректы
типа


Код: c#
1.
2.
3.
4.
	routes.MapRoute(
				"checkPage",
				"item/{id}",
				new { controller = "Error", action = "Index", id = UrlParameter.Optional }


но это тупой редирект, который не проверяет наличие id в базе данных.
Поэтому контроллер ItemController и выполняет такую проверку, но он в упор не дружит с ErrorController....
В общем я понял, что похоже мне не удастся решить задачку через routes.MapRoute..
И надо ItemController научить видеть HandleError
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC как обработать исключение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]