2014-03-10 11 views
1

Страница пользовательской ошибки, установленная в файле web.config, не отображается, когда возникает ошибка «Недействительные символы в пути». Он работает для других ошибок сервера, поэтому я не уверен, что я могу что-то сделать?Пользовательская страница ошибки для «Незаконных символов в пути»

Пример запроса, который показывает правильно пользовательскую страницу Ошибка: website.com/3f.jsp

Пример запроса, который не делает: website.com/%3f.jsp

Web.config: <customErrors mode="On" defaultRedirect="ErrorDisplay.aspx"></customErrors>

StackTrace (CustomErrors Off)

[ArgumentException: Illegal characters in path.] 
    System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String[] str) +276 
    System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList) +88 
    System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String[] pathList, Boolean checkForDuplicates, Boolean needFullPath) +43 
    System.IO.Path.GetFullPath(String path) +82 
    System.Web.HttpApplication.CheckSuspiciousPhysicalPath(String physicalPath) +19 
    System.Web.Configuration.HttpConfigurationSystem.ComposeConfig(String reqPath, IHttpMapPath configmap) +175 
    System.Web.HttpContext.GetCompleteConfigRecord(String reqpath, IHttpMapPath configmap) +434 
    System.Web.HttpContext.GetCompleteConfig() +49 
    System.Web.HttpContext.GetConfig(String name) +195 
    System.Web.CustomErrors.GetSettings(HttpContext context, Boolean canThrow) +20 
    System.Web.HttpResponse.ReportRuntimeError(Exception e, Boolean canThrow) +39 
    System.Web.HttpRuntime.FinishRequest(HttpWorkerRequest wr, HttpContext context, Exception e) +486 

Я попытался вручную поймать ошибку в Global.asax Application_Error h andler, но это никогда не называется. Application_BeginRequest даже не вызывается, когда есть незаконные символы, поэтому где IIS выбрасывает эту ошибку и есть ли способ показать пользовательскую страницу?

Согласно this article Возможно, мне повезло.

ответ

1

Как ваша трассировка стека показывает, и вы наблюдали в Application_BeginRequest не вызывались, эта ошибка возникает при обработке запроса IIS перед кодом приложения даже не вызывается - ответ на ваш первый вопрос: поэтому, ваша Web.config и Application_Error реализации не рассматривается ,

A related discussion on ASP.NET forums указывает на то же самое.

На моем локальном IIS (7,5) сервер, я вернусь ...

Bad Request - Недопустимый URL

HTTP Error 400. Запрос URL недействителен.

... для URL http://localhost/%&what.

Любопытный, я попытался установить статическую страницу пользовательских ошибок для кода состояния HTTP 400 под страницами ошибок локального сервера в диспетчере IIS, а также настроить локальный сервер для использования пользовательских страниц ошибок для локальных и удаленных запросов; но я никогда не видел настраиваемую страницу ошибок, которую я установил для этой конкретной ошибки.

TechNet article объясняет, почему:

Вы не можете настроить следующие ошибки HTTP: 400, 403.9, 411, 414, 500, 500,11, 500,14, 500,15, 501, 503 и 505.

Итак, я думаю, что ответ на ваш второй вопрос: нет, IIS не дает вам возможности отображать страницу с настраиваемыми ошибками для этого.

+0

Я думаю, что вы правы, приятно найти статью TechNet тоже! Я также попытался указать пользовательскую страницу для 500 и т. Д. Через IIS и web.config. Но ни один из них, похоже, не принял, что, я думаю, имеет смысл с тем, что было отмечено в статье TechNet. – MisterIsaak

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

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