2008-11-14 5 views
1

Где я могу настроить собственные ошибки для каталогов в моем приложении, таких как App_Code, App_Browsers и т. Д.? У меня уже есть customErrors, настроенный в файле web.config, и работает так, как ожидалось. Например,Пользовательские ошибки для папок «Приложения»? (ASP.NET)

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

но

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

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

ответ

1

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

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

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

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

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

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

UPDATE:

Найдено это, когда я попытался это локально: http://support.microsoft.com/kb/942047/

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

+0

Нет, я не хочу разрешать доступ. Я просто хочу, чтобы сообщение об ошибках для этих папок имело последовательный вид, как и все другие ошибки. Извините, если это неясно. – 2009-07-14 17:44:26

0

Один из способов заключается в предоставлении редирект в файле 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 - нарушение второй строки кода помогло идентифицировать недостающий файл}

+0

Я пробовал это, но в итоге получил тот же результат. Я заметил, что несколько крупных сайтов, работающих на .NET, отображают общую ошибку. Возможно, это только я, но я бы предпочел, чтобы ВСЕ ошибки обрабатывались изящно для пользователя. Даже SO отображает пустой экран, если вы пытаетесь получить доступ к каталогу/App_Code. – 2008-11-14 21:20:04

1

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

0

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

Взятые from here:

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

  • правой кнопкой мыши на веб-сайт и выберите Свойства
  • Выберите вкладку Домашний каталог
  • Нажмите кнопку «Конфигурация»
  • Выберите вкладку «Сопоставления»
  • Нажмите кнопку Вставить (см Рисунок 4)
  • Вставить путь к aspnet_isapi.dll в поле Исполняемого (вы можете скопировать этот путь из карты сценария для .aspx файлов)
  • Снимите флажок Убедитесь, что файл существует
  • Нажмите кнопку OK

 Смежные вопросы

  • Нет связанных вопросов^_^