powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как правильно реализовать 404 ошибку
25 сообщений из 70, страница 1 из 3
Как правильно реализовать 404 ошибку
    #38731799
D_A_S1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Имеется сайт на ASP.NET.
Необходимо правильно реализовать 404 ошибку, т.е. чтобы статус был именно 404 в таких случаях:
1) www.site.ru/asd
2) www.site.ru/default.aspx/asdasd
ТО что есть в интернете, не помогает.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38731844
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Global.asax.cs
Код: 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.
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            var context = ((MvcApplication)sender).Context;

            context.ClearError();
            context.Response.Clear();
            context.Response.TrySkipIisCustomErrors = true;
            context.Response.StatusCode = 404; // NotFound

            // Метод контроллера Error/Index содержит страницу с ошибкой.
            var rd = new RouteData();
            rd.Values["controller"] = "Error";
            rd.Values["action"] = "Index";

            IController c = new ErrorController();

            try
            {
                c.Execute(new RequestContext(new HttpContextWrapper(context), rd));
            }
            catch
            {
                // Навсякий...
                context.Response.Write("Error page error.");
            }
        }
    }


web.config
Код: xml
1.
2.
<system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true" />
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38731917
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_A_S1,

вот всё что нужно. никакой магии, никаких ковыряний в Global.asax

Web.config

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  <system.webServer>

     ...

    <httpErrors xdt:Transform="Insert" errorMode="DetailedLocalOnly" existingResponse="Replace" defaultResponseMode="ExecuteURL">
      <remove statusCode="403" subStatusCode="-1" />
      <remove statusCode="404" subStatusCode="-1" />
      <remove statusCode="500" subStatusCode="-1" />
      <error statusCode="403" path="/Error/Forbidden" responseMode="ExecuteURL" />
      <error statusCode="404" path="/Error/NotFound" responseMode="ExecuteURL" />
      <error statusCode="500" path="/Error/InternalServerError" responseMode="ExecuteURL" />
    </httpErrors>

    ...

  </system.webServer>



контроллер

Код: 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.
    [SessionState(SessionStateBehavior.Disabled)]
    [OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
    public class ErrorController : Controller
    {
        private static readonly Logger Log = LogManager.GetLogger("HttpError");

        private HttpStatusCode _httpStatusCode;
        private string _statusCodeDescription;

        // 500
        public ActionResult InternalServerError()
        {
            SetResponse(HttpStatusCode.InternalServerError);
            // message to view from TempData
            return View();
        }

        // 404
        public ActionResult NotFound()
        {
            SetResponse(HttpStatusCode.NotFound);
            return View();
        }

        // 403
        public ActionResult Forbidden()
        {
            SetResponse(HttpStatusCode.Forbidden);
            return View();
        }

        private void SetResponse(HttpStatusCode httpStatusCode)
        {
            _httpStatusCode = httpStatusCode;
            _statusCodeDescription = HttpWorkerRequest.GetStatusDescription((int)_httpStatusCode);
            Response.StatusCode = (int)_httpStatusCode;
            Response.StatusDescription = _statusCodeDescription;
        }

        protected override void OnActionExecuted(ActionExecutedContext context)
        {
            if (!Log.IsDebugEnabled)
                return;

            Log.Debug(String.Format("{0}, {1}, IP {2}, \"{3}\", REF {4}",
                (int)_httpStatusCode,
                HandleErrorFilter.GetRequestInfo(Request),
                Request.UserHostAddress,
                Request.UserAgent,
                Request.UrlReferrer == null ? "---" : Request.UrlReferrer.AbsoluteUri));
        }

    }



ну и пару тройку вьюшек для контроллеров. проследи, чтобы там никаких исключений не падало ни при каких обстоятельствах.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38731966
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732002
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ http://codearticles.ru/articles/2337

плохой рецепт, во-первых эта либа безбожно устарела (для MVC 3), а во-вторых, делает полную хрень через задницу.

решается же элементарно штатными средствами, с помощью Web.config и одного контроллера.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732007
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ http://codearticles.ru/articles/2337
плохой рецепт, во-первых эта либа безбожно устарела (для MVC 3), а во-вторых, делает полную хрень через задницу.
решается же элементарно штатными средствами, с помощью Web.config и одного контроллера.
Так а со времен MVC3 ничего не изменилось, зачем ей обновляться. Решается штатно - согласен. Либа для лентяев - поставит и работает.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732019
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТак а со времен MVC3 ничего не изменилось, зачем ей обновляться. Решается штатно - согласен. Либа для лентяев - поставит и работает.

Видел что эта либа делает? Это какой-то форменный ужас! Модуль, обработчик, своя фабрика контроллеров, и всё это регистрируется динамически через веб активатор. Ради того, чтобы показать свою страницу 404. Атас... А всего-то надо прописать несколько строк в Web.config

На хабре уже как-то представляли эту либу. Некоторые после этого усомнились в адекватности разработчиков ASP.NET.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732023
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВидел что эта либа делает?
Видел. У меня она стоит и уже как 2 года работает.

hVosttЭто какой-то форменный ужас! Модуль, обработчик, своя фабрика контроллеров, и всё это регистрируется динамически через веб активатор.
Ну чел решил блеснуть извилинами, без паники

hVosttРади того, чтобы показать свою страницу 404. Атас... А всего-то надо прописать несколько строк в Web.config
Так никто ж не спорит, лучше самому честно запилить реализацию. Кстати, твой код закинул в рецепт, он прям просится туда.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732042
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВидел. У меня она стоит и уже как 2 года работает.

лентяй


МСУТак никто ж не спорит, лучше самому честно запилить реализацию. Кстати, твой код закинул в рецепт, он прям просится туда.

хитро, в тот же рецепт, теперь наезд на рецепт выглядит глупо
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732065
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttтеперь наезд на рецепт выглядит глупо
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732380
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отсюда

ExecuteURLServes dynamic content, for example, a .asp file for the custom error. If responseMode is set to ExecuteURL, the path value has to be a server relative URL .
А если у меня страница на разных серверах по разному деплоится, корень приложения разный.

http://serverName/ AppName /Error/Index
vs
http://serverName/Error/Index

Что делать? Как быть? Кто виноват?
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732398
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Офигенные советы. Один повторяет предложенное мной и отвергнутое местным сообществом решение. Второй подходит только для детского сада. Что вообще происходит?

зы: Asp.Net УГ.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732405
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА если у меня страница на разных серверах по разному деплоится, корень приложения разный.
Не понял, ты одно и тоже приложение на разные сервера с разными корнями деплоишь? :)

http://www.asp.net/mvc/tutorials/deployment/visual-studio-web-deployment/web-config-transformations
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732411
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КА если у меня страница на разных серверах по разному деплоится, корень приложения разный.
Не понял, ты одно и тоже приложение на разные сервера с разными корнями деплоишь? :)Да. Оба деплоя в конфигурации Release. Что делать?

зы: Asp.Net УГ.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732425
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДа. Оба деплоя в конфигурации Release. Что делать?
Бред. Причем феерический. Что делать? Нагружать саппорт дополнительными задачами.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732431
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КДа. Оба деплоя в конфигурации Release. Что делать?
Бред. Причем феерический. Что делать? Нагружать саппорт дополнительными задачами.Чтобы саппорт вебконфиг по месту правил? Вот это бред!

Предположим, что это коробочное решение. Хз на каком сервере будет установлено. Как быть?

зы: Asp.Net УГ.
зы: Asp.Net УГ.
зы: Asp.Net УГ.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732441
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К, что за паника? Необходимо для разных сред разные значения в конфигах прописать?
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732449
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДа. Оба деплоя в конфигурации Release. Что делать?Добавить ещё конфигураций: TestServer, ProductionServer1, ProductionServer2.
Использовать Web Config Transformations, SlowCheetah XML Transforms.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732459
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЧтобы саппорт вебконфиг по месту правил? Вот это бред!

Предположим, что это коробочное решение. Хз на каком сервере будет установлено. Как быть?И как оно будет установлена, если не руками? Инсталлятором? Ну в нём и просите задать нужный параметр.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732463
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей КДа. Оба деплоя в конфигурации Release. Что делать?Добавить ещё конфигураций: TestServer, ProductionServer1, ProductionServer2.
Использовать Web Config Transformations, SlowCheetah XML Transforms.А если таких мест установок 10, 20, 500? Для каждого деплоя делать специальный билд? Может тогда проще через Global.asax.cs , как я сразу предложил?
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732466
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей КЧтобы саппорт вебконфиг по месту правил? Вот это бред!

Предположим, что это коробочное решение. Хз на каком сервере будет установлено. Как быть?И как оно будет установлена, если не руками? Инсталлятором? Ну в нём и просите задать нужный параметр.Это не наш метод. На сервере есть информация о том, где установлено приложение. Это должно определяться автоматически.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732469
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Добавить ещё конфигураций: TestServer, ProductionServer1, ProductionServer2.
Использовать Web Config Transformations, SlowCheetah XML Transforms.А если таких мест установок 10, 20, 500? Для каждого деплоя делать специальный билд? Может тогда проще через Global.asax.cs , как я сразу предложил?Может конкретно уже опишите ситуацию?

У нас например 47 тестовых сред, за которыми следит СruiseСontrol. И у каждой из них своя конфигурация. И ничего, собираются себе автоматом, каждая по своему расписанию, или по кнопке Force Build.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732473
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
И как оно будет установлена, если не руками? Инсталлятором? Ну в нём и просите задать нужный параметр.Это не наш метод. На сервере есть информация о том, где установлено приложение. Это должно определяться автоматически.То коробочное решение, что "Хз на каком сервере будет установлено", то оно уже установлено и есть какая-то информация о том, где.

Я запутался
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732478
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЧтобы саппорт вебконфиг по месту правил? Вот это бред!
Юморист. Это прямая обязанность саппорта править конфиги, настраивать доступы, учетки. Например, у меня нет доступа к продуктиву. Делаю релиз, а конфиги правит саппорт, обновляет приложение.

Алексей КПредположим, что это коробочное решение. Хз на каком сервере будет установлено. Как быть?
Всё так же. Либо инсталлятор, либо конфиг руками.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732480
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЭто должно определяться автоматически.
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 1 из 3
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как правильно реализовать 404 ошибку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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