Кастомные ошибки для папок "App"? (ASP.NET) - PullRequest
1 голос
/ 14 ноября 2008

Где я могу настроить собственные ошибки для каталогов в моем приложении, таких как App_Code, App_Browsers и т. Д. У меня уже есть customErrors, настроенный в web.config, и он работает как положено. Например,

http://www.mysite.com/bla.aspx> перенаправляет на страницу 404

но

http://www.mysite.com/App_Code/> отображает «Система не может найти указанный файл.»

Для моего сайта нет физического каталога App_Code. Это то, что я могу изменить в IIS?

Ответы [ 4 ]

1 голос
/ 14 июля 2009

Вы пытаетесь сервировать контент из защищенной папки ... ??

Я думаю, что вам может понадобиться разрешить доступ к этим папкам, чтобы получить хорошие ошибки, которые вы ищете ...

http://www.webdavsystem.com/server/documentation/hosting_iis_asp_net/protected_folders

Как говорится, есть причина, по которой эти папки защищены.

Я бы никогда не положил ничего, что мне нужно, чтобы IIS служил в защищенных папках.

Но всегда есть причины что-то делать? Я нарушил несколько правил в моей короткой жизни:)

UPDATE

Нашел это, когда я попробовал это локально: http://support.microsoft.com/kb/942047/

Похоже, что эти зарезервированные каталоги выбрасывают специальные 404, вы можете получить IIS для таргетинга типа 404.8 ... без открытия службы для этих каталогов

1 голос
/ 16 ноября 2008

Полагаю, вам нужно будет установить страницы ошибок в самом IIS, поскольку запросы, о которых вы говорите, никогда не доходят до приложения ASP.NET. Причина, по которой ваш первый пример работает, заключается в том, что IIS распознает расширение .ASPX и перенаправляет его в ASP.NET.

0 голосов
/ 14 июля 2009

Добавьте сопоставление с подстановочными знаками в IIS для запуска ВСЕХ запросов через ASP.net, затем вы можете использовать Global.asax для обработки ошибки.

Взят отсюда :

Выполните следующие действия, чтобы создать карту сценариев с подстановочными знаками в IIS 6.0:

  • Щелкните правой кнопкой мыши веб-сайт и выберите Свойства
  • Выберите вкладку Домашний каталог
  • Нажмите кнопку Конфигурация
  • Выберите вкладку Mappings
  • Нажмите кнопку Вставить (см. Рисунок 4)
  • Вставьте путь к aspnet_isapi.dll в поле Исполняемый файл (вы можете скопировать этот путь из карты сценариев для файлов .aspx)
  • Снимите флажок Проверять, существует ли файл
  • Нажмите кнопку ОК
0 голосов
/ 14 ноября 2008

Одним из способов является перенаправление в файл global.asax:

 void Application_Error(object sender, EventArgs e) 
{
    //uncomment this to narrow down 'helpful' microsoft messages
    //HttpRequest request = ((HttpApplication)sender).Context.Request; 


    Exception ex = Server.GetLastError();
    //ErrorManager is a custom error handling module
    ErrorManager.ProcessError(ex);
    Response.Redirect("~/error.aspx?error=" + HttpUtility.UrlEncode(ex.Message), true);
}

{Кстати, я получил исключение, которое просто не смог отследить - он просто сказал «файл не найден», но не сказал, какой файл отсутствует. Оказалось, что ссылка на битый образ в файле css - разрыв строки в приведенном выше коде помог определить отсутствующий файл}

...