powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как правильно реализовать 404 ошибку
70 сообщений из 70, показаны все 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
Как правильно реализовать 404 ошибку
    #38732487
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
А если таких мест установок 10, 20, 500? Для каждого деплоя делать специальный билд? Может тогда проще через Global.asax.cs , как я сразу предложил?Может конкретно уже опишите ситуацию?Уже описал, конкретнее некуда.

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

skyANAУ нас например 47 тестовых сред, за которыми следит СruiseСontrol. И у каждой из них своя конфигурация. И ничего, собираются себе автоматом, каждая по своему расписанию, или по кнопке Force Build.А у меня хз сколько серверов и где они установлены. Поэтому называю "коробочным" решением.Запишите видео!

Чтобы админ хз какого сервера создал сайт (и пул) в IIS с тем названием, что на видео, структуру каталогов ту, что на видео.
А те, кто решили выпендрится и сделать по своему, пусть правят руками.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732506
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я для своего домашнего проекта так и сделал, т.к. времени писать инсталлятор попросту нет.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732510
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати в IIS есть Configuration Editor.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732516
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...
Всё так же. Либо инсталлятор, либо конфиг руками. Для тех, кто в танке.
Это феерический бред. Не тупи.

Алексей КА у меня хз сколько серверов и где они установлены. Поэтому называю "коробочным" решением.
Тебе уже сказали, если это коробка - пиши свой инсталлер. В чем проблема? Как приложение должно угадать, к какому SQL серверу нужно подключаться?
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732525
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКак приложение должно угадать, к какому SQL серверу нужно подключаться?Это совершенно другая ситуация. Их нельзя сравнивать.

skyANA, МСУ, угораю с вас. Вы не имели дела с серьёзными проектами!

Кароче, срач уныл и неконструктивен. Если есть нормальный способ сделать через web.config - показывайте. Иначе не надо global.asax.cs ругать. Это решение лучше.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732533
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЭто совершенно другая ситуация. Их нельзя сравнивать.
Это совершенно стандартная ситуация. Стандартней некуда.

Алексей КskyANA, МСУ, угораю с вас. Вы не имели дела с серьёзными проектами!
О как :)

Алексей ККароче, срач уныл и неконструктивен. Если есть нормальный способ сделать через web.config - показывайте. Иначе не надо global.asax.cs ругать. Это решение лучше.
Ты выдумал себе какие-то маленькие проблемы и пытаешься с помощью топора их решить, когда достаточно обычного напильника.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732536
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, можно еще такой подход использовать. При первом запуске модифицировать web.config под себя. Вот рецепт http://codearticles.ru/articles/444
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732539
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУКак приложение должно угадать, к какому SQL серверу нужно подключаться?Это совершенно другая ситуация. Их нельзя сравнивать.

skyANA, МСУ, угораю с вас. Вы не имели дела с серьёзными проектами! Ну если это тебе помогает в решении твоей проблемы, то угарай себе на здоровье.

Сколько кстати уже внедрений у тебя, серъёзный ты наш? 10, 20, 500?
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732545
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КЭто совершенно другая ситуация. Их нельзя сравнивать.
Это совершенно стандартная ситуация. Стандартней некуда.
Повторюсь: "На сервере есть информация о том, где установлено приложение".
Так лучше воспринимается?

МСУАлексей КskyANA, МСУ, угораю с вас. Вы не имели дела с серьёзными проектами!
О как :)Факты указывает на это.

МСУАлексей ККароче, срач уныл и неконструктивен. Если есть нормальный способ сделать через web.config - показывайте. Иначе не надо global.asax.cs ругать. Это решение лучше.
Ты выдумал себе какие-то маленькие проблемы и пытаешься с помощью топора их решить, когда достаточно обычного напильника.Да там всё уже давно решено, проблем никаких. Просто решил попробовать предложенное решение, оно мне не понравилось.

Я согласен, в global.asax.cs сделано через джоппу, но другие решения ещё хуже.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732549
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКстати, можно еще такой подход использовать. При первом запуске модифицировать web.config под себя. Вот рецепт http://codearticles.ru/articles/444 Да я вообще думаю, что локальные настройки сервера, вроде connectionString, не надо хранить в web.config. Так деплоить удобнее.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732550
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Это совершенно другая ситуация. Их нельзя сравнивать.

skyANA, МСУ, угораю с вас. Вы не имели дела с серьёзными проектами! Ну если это тебе помогает в решении твоей проблемы, то угарай себе на здоровье.

Сколько кстати уже внедрений у тебя, серъёзный ты наш? 10, 20, 500?Обиделся?
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732553
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Ну если это тебе помогает в решении твоей проблемы, то угарай себе на здоровье.

Сколько кстати уже внедрений у тебя, серъёзный ты наш? 10, 20, 500?Обиделся? Нет, я на глупости не обижаюсь.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732555
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУКстати, можно еще такой подход использовать. При первом запуске модифицировать web.config под себя. Вот рецепт http://codearticles.ru/articles/444 Да я вообще думаю, что локальные настройки сервера, вроде connectionString, не надо хранить в web.config. Так деплоить удобнее.Гениальное открытие :)
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732563
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДа там всё уже давно решено, проблем никаких. Просто решил попробовать предложенное решение, оно мне не понравилось.

Я согласен, в global.asax.cs сделано через джоппу, но другие решения ещё хуже.Да у тебя походу комплексы :)
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732575
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЯ согласен, в global.asax.cs сделано через джоппу, но другие решения ещё хуже.

Бред, решение через Web.config штатное и работает железно как часы. А если ты не умеешь пользоваться трансформациями конфига, эт твои личные проблемы. Можно просто научиться, а можно обвинить, что фреймворк виноват или ещё кто.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732576
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей КДа там всё уже давно решено, проблем никаких. Просто решил попробовать предложенное решение, оно мне не понравилось.

Я согласен, в global.asax.cs сделано через джоппу, но другие решения ещё хуже.Да у тебя походу комплексы :)Откуда?

Таки нормальные предложения поступят, или в протокол записываю, что способ через web.config уг?

Неверующим напоминаю, что хелпер @Url.Content("~") возвращает правильный путь к корню приложения, значит реализовать такое в web.config тоже можно. Не сделано, видимо, от недалёкости авторов сего поделия.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732580
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КЯ согласен, в global.asax.cs сделано через джоппу, но другие решения ещё хуже.

Бред, решение через Web.config штатное и работает железно как часы. А если ты не умеешь пользоваться трансформациями конфига, эт твои личные проблемы. Можно просто научиться, а можно обвинить, что фреймворк виноват или ещё кто.Повторяю опять - серверов много, у каждого свои локальные настройки. Многие из них я не знаю, и не хочу знать, накой мне их адреса, пароли и т п. Делать под каждый деплой отдельный билд не собираюсь.

Была описана конкретная ситуация и задан конкретный вопрос. Где ответ?

Хотя, сегодня пятница, языками почесать на отвлечённые темы тоже можно...
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732583
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttБред, решение через Web.config штатное и работает железно как часы ...китайские...
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732604
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КБыла описана конкретная ситуация и задан конкретный вопрос. Где ответ?

Ответ тебе уже дан, имеющий уши да услышит, имеющий глаза да увидит, имеющий мозг поймёт. А что делать, если этих составляющих нет, я не знаю, может просто сменить профиль?
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732608
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Да у тебя походу комплексы :)Откуда? У тебя всё работает, но вот ты прочитал, что некто считает твоё решение черезжопным и понеслась: УГ! УГ! УГ! УГ! Нормальные предложения поступят?! Да вы не имели дела с серьёзными проектами!

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

При чём тут билд? Страницы ошибок классически всегда настраивались в конфиге, так как требуется показывать разные страницы для пользователей, для тестеров и разработчика.

Конфиг нужен, чтобы конфигурировать приложение. Капитан очевидность шлёт пламенный привет, если тебе лень включить мозг и осознать этот очевидный факт, то что тут поделаешь? Твёрдость не тупость?
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732630
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КДелать под каждый деплой отдельный билд не собираюсь.

При чём тут билд?На том же Power Shell можно написать скрипт публикации, что будет в процессе деплоя считывать "На сервере есть информация о том, где установлено приложение". и трансформировать конфиг.

Но Алексей походу хочет, чтобы это внутри приложения ASP.NET происходило. Реализовать там нужный интерфейс.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732633
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Откуда? У тебя всё работает, но вот ты прочитал, что некто считает твоё решение черезжопным и понеслась: УГ! УГ! УГ! УГ! Нормальные предложения поступят?! Да вы не имели дела с серьёзными проектами!

Очень смахивает на то, что у тебя комплексы Ну просто моё решение мне не нравится. Я обрадовался, что найдено нормальное решение, но не тут-то было... Я расстроился, мне захотелось высказаться.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732643
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНа том же Power Shell можно написать скрипт публикации, что будет в процессе деплоя считывать "На сервере есть информация о том, где установлено приложение". и трансформировать конфиг.

Так и я о том же, скрипт деплоя может легко решать эту задачу. Поставлять путь виртуальной директории в трансформации. Задачка для школьника.

А на счёт того, почему «If responseMode is set to ExecuteURL, the path value has to be a server relative URL.», так это легко объяснимо: допустим в виртуальные папки деплоятся несколько приложений, а страницы ошибок для них одни и те же. Так в общем-то оно и есть по умолчанию. Обработка HTTP ошибок должна конфигурироваться в конфиге, но никак в Global.asax, -- это какое-то унылое рукожопство.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732645
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКонфиг нужен, чтобы конфигурировать приложение.Если бы в конфиге были только локальные настройки, тогда да. Но в существующем web.config помойка. Каждый гадит туда, кому не лень. Это просто капец какой-то. Там масса информации, которая относится к конфигурированию постольку-поскольку. И его деплоить надо с каждой новой версией, поэтому настройки админам каждый раз заново прописывать?
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732646
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЯ обрадовался, что найдено нормальное решение, но не тут-то было...

Просто научись пользоваться конфигами и управлять процессом деплоя.
Делов-то?
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732651
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttКонфиг нужен, чтобы конфигурировать приложение.Если бы в конфиге были только локальные настройки, тогда да. Но в существующем web.config помойка.Атрибут configSource может быть применён к большинству секций конфигурационного файла. Разложи помойку на части.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732652
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt... скрипт деплоя может легко решать эту задачу. Поставлять путь виртуальной директории в трансформации. Задачка для школьника.Зачем мне эти педали? Щас всё брошу и буду писать скрипты, ага... XCopy deploy + отдельное конфигурирование рулит.
hVosttА на счёт того, почему «If responseMode is set to ExecuteURL, the path value has to be a server relative URL.», так это легко объяснимо: допустим в виртуальные папки деплоятся несколько приложений, а страницы ошибок для них одни и те же.Я уж сам решу, где ставить тильду, а где не ставить. Главное чтобы она работала.
hVosttТак в общем-то оно и есть по умолчанию. Обработка HTTP ошибок должна конфигурироваться в конфиге, но никак в Global.asax, -- это какое-то унылое рукожопство.Админы будут конфигурировать обработку ошибок в программе? Может им ещё исходники дать, чтобы они try...catch переставили, как им больше нравится. У ха ха...
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732654
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЕсли бы в конфиге были только локальные настройки, тогда да. Но в существующем web.config помойка. Каждый гадит туда, кому не лень. Это просто капец какой-то. Там масса информации, которая относится к конфигурированию постольку-поскольку. И его деплоить надо с каждой новой версией, поэтому настройки админам каждый раз заново прописывать?

Да при чём тут твоя помойка??

Вот пример простейшей трансформации для Release конфигурации:

Web.Release.config

Код: xml
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.
<?xml version="1.0"?>

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <!-- Меняем строку соединения к БД -->
  <connectionStrings>
    <add name="PrimaryConnection"
      connectionString="..........................................."
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>

  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>

  <appSettings>
    <!-- Меняем основную почту администратора -->
    <add key="Mailer.Administrator" value="admin@domain.ru" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
  </appSettings>
  
  <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>

     <!-- Делаем реврайт для домена с WWW на без WWW -->
     <rewrite xdt:Transform="Insert">
      <rules>
        <rule name="SEO" stopProcessing="true">
          <match url=".*" ignoreCase="true" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^domain\.ru$" negate="true" />
          </conditions>
          <action type="Redirect" url="http://domain.ru/{R:0}" redirectType="Permanent" />
        </rule>

     <!-- Убираем слеши в конце URL -->
        <rule name="Remove trailing slash" stopProcessing="true">
          <match url="(.*)/$" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Redirect" redirectType="Permanent" url="{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

</configuration>
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732655
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Если бы в конфиге были только локальные настройки, тогда да. Но в существующем web.config помойка.Атрибут configSource может быть применён к большинству секций конфигурационного файла. Разложи помойку на части.Да, думал об этом. Буду ещё думать. Возможно, это решит проблему.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732658
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВот пример простейшей трансформации для Release конфигурации:а525

Да знаю я про неё, использую где надо. Но не нужна она мне в этом случае. Требуется решение без трансформации конфига.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732661
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЯ уж сам решу, где ставить тильду, а где не ставить. Главное чтобы она работала.

Фейспалм...

Алексей КАдмины будут конфигурировать обработку ошибок в программе?

Речь не идёт об ошибках в программе, а о страницах ошибок. Суть в том, что обработав ошибку программа возвращает код ошибки (404, 500, 503...), а дальше уже не забота программы, т.е. это выходит за пределы её ответственности.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732673
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КЯ уж сам решу, где ставить тильду, а где не ставить. Главное чтобы она работала.
Фейспалм...Фейснапалм...
hVosttАлексей КАдмины будут конфигурировать обработку ошибок в программе?

Речь не идёт об ошибках в программе, а о страницах ошибок. Суть в том, что обработав ошибку программа возвращает код ошибки (404, 500, 503...), а дальше уже не забота программы, т.е. это выходит за пределы её ответственности.И в чью же ответственность оно входит, если не секрет? Местные админы сами будут странички для ошибок писать? Мда...

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

Способ отображения ошибки на экране входит в ответственность моей программы.

Если до тебя до сих пор о-о-очень туго доходит, мозг ты включать не хочешь, то вот тебе ситуация.

Возникает ошибка в самом Global.asax, приложение не в состоянии обработать ошибку, так как тупо падает. Кто и как по-твоему должен обработать ошибку?

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

Возникает ошибка в самом Global.asax, приложение не в состоянии обработать ошибку, так как тупо падает. Кто и как по-твоему должен обработать ошибку?Никто. Так же как никто не обработает ошибку, возникшую в этом же месте в системной библиотеке, которая написана не нами. Ещё замечания будут?
hVosttНаезды на предмет, во-о-от.. дескать асп.нет уг, обычно связаны с банальным тугоумием и непониманием принципов его работы. Каждый раз находится индивидуум, которому начинает казаться, что асп.нет писали дибилы, и по тупости они забыли добавить обработку тильды. Проблемы с ЧСВ не иначе.Это маркетинговый ход для привлечения аудитории, а не то что ты подумал. :-)
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732691
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ККонечно - пятница, вечер. :-)

Ну я так и подумал


Алексей КНикто. Так же как никто не обработает ошибку, возникшую в этом же месте в системной библиотеке, которая написана не нами. Ещё замечания будут?

httpErrors -- уровень обработки ошибок вне контекста приложения. вне этого контекста тильда работать не будет, так нет никакого приложения и его папки, это даёт гарантии, что при непредвиденных ошибках пользователь увидит то, что требуется. а твоя проблема с указанием пути при деплое детская и надуманная. xcopy это детский сад и даже не смешно, если уж говорить о массовом развёртывании.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732693
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostthttpErrors -- уровень обработки ошибок вне контекста приложения. вне этого контекста тильда работать не будет, так нет никакого приложения и его папки, это даёт гарантии, что при непредвиденных ошибках пользователь увидит то, что требуется.Я вижу, что это решение мне не подходит, мне этого достаточно. Причина проблемы меня не интересует. Мне важен результат, а его нет.

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

Это совершенно стандартная ситуация. Стандартней некуда.
Повторюсь: "На сервере есть информация о том, где установлено приложение".
Так лучше воспринимается?
На каком сервере? Сервера еще нет никакого, есть твоё приложение и всё. Клиент только получил твоё приложение. Где сервер? Какой сервер?

Алексей КМСУКстати, можно еще такой подход использовать. При первом запуске модифицировать web.config под себя. Вот рецепт http://codearticles.ru/articles/444 Да я вообще думаю, что локальные настройки сервера, вроде connectionString, не надо хранить в web.config. Так деплоить удобнее.
В мемориз! (с)
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732717
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМне важен результат, а его нет.

Если сидеть и ныть у моря, рыбка не поймается.


Алексей Кxcopy - это проверенное временем решение, имеющее в том числе философские основы.



И зачем было говорить

Алексей КА если таких мест установок 10, 20, 500?

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

При чём тут билд? Страницы ошибок классически всегда настраивались в конфиге, так как требуется показывать разные страницы для пользователей, для тестеров и разработчика.
Очень грамотное замечание. Зачем тупость, проблемы с деплоем и "неудобность" распространения мешать с платформой ASP.NET. Бред ведь.
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732727
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttКонфиг нужен, чтобы конфигурировать приложение.Если бы в конфиге были только локальные настройки, тогда да. Но в существующем web.config помойка. Каждый гадит туда, кому не лень.
По аналогии: code behing и mvvm в wpf зло, каждый гадит туда, кому не лень.

P.S. Друзья, спокуха. Это просто винформзятнику дали веба покурить, ломки. Скоро попустит и будет благоденствие. А пока даешь еще попкорну!
...
Рейтинг: 0 / 0
Как правильно реализовать 404 ошибку
    #38732735
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУP.S. Друзья, спокуха. Это просто винформзятнику дали веба покурить, ломки. Скоро попустит и будет благоденствие. А пока даешь еще попкорну!

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

Web.config от Алёши


Не проходите мимо :)
...
Рейтинг: 0 / 0
70 сообщений из 70, показаны все 3 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как правильно реализовать 404 ошибку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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