Обзор:MVC Url Request - Недопустимые символы в пути
- 404 страница ошибки настраивается в web.config и работает
- Использование Umbraco v6.2
- CustomErrors устанавливаются
RemoteOnly
Проблема заключается в том, что я помещаю «% 7C» в URL-адрес, я получаю следующее:
Illegal characters in path.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: Illegal characters in path.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[ArgumentException: Illegal characters in path.]
System.IO.Path.GetExtension(String path) +14365864
Umbraco.Core.UriExtensions.IsClientSideRequest(Uri url) +23
Umbraco.Web.UmbracoModule.BeginRequest(HttpContextBase httpContext) +365
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +92
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165
% 7C - это труба "|". % 7C - единственный (который я пробовал), который дает мне YSOD.
Если я положил что-нибудь (я пробовал 30 + комбинации), например% 7A,% 2A, то иногда он даст мне эту ошибку без перехода на страницу 404, но никогда YSOD:
Bad Request - Invalid URL
HTTP Error 400. The request URL is invalid.
web.config
<customErrors mode="RemoteOnly" defaultRedirect="~/error-page" />
<httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="503" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="~/error-page" responseMode="ExecuteURL" />
<error statusCode="500" prefixLanguageFilePath="" path="~/error-page" responseMode="ExecuteURL" />
<error statusCode="503" prefixLanguageFilePath="" path="~/error-page" responseMode="ExecuteURL" />
</httpErrors>
В Umbraco есть файл конфигурации (umbracoSettings.config), в котором есть раздел XML, в котором размещается символ.
Пример:
<char org="~"></char>
<char org=" ">-</char>
<char org="""></char>
<char org="'"></char>
<char org="%"></char>
<char org="."></char>
<char org="|"></char>
Вы можете видеть, что труба находится там. Если я укажу URL,
local.website.com/asdf|
(обратите внимание на трубу), он закодирован в local.website.com/asdf%7C
.
Я попытался добавить <char org="%7C"></char>
, но это не сработает. Я что-то упускаю? Это известная ошибка?
Это сейчас в моем web.config. Под ' ' –