Специальные символы ASP.NET в URL (двоеточие) не работают, даже если requestPathInvalidCharacters = "" - PullRequest
3 голосов
/ 10 января 2012

Мне нужно передать двоеточие внутри URL в ASP.NET, например: "http://mywebapp.com/Portal:Main/". Википедия делает это много, и двоеточия являются действительными символами URL в соответствии с RFC.

I 'мы нашли этот SO вопрос и прочитали эту запись в блоге , которая охватывает фильтр недопустимых символов в ASP.NET.

Использование VS2010 Ultimate и попытка с новым ASP.NET WebForms и новый проект ASP.NET MVC 2 Я всегда добавлял это в свой web.config:

<httpRuntime requestPathInvalidCharacters="" />

, а также

<httpRuntime requestValidationMode="2.0"
    requestPathInvalidCharacters=""
    relaxedUrlToFileSystemMapping="true"
/>

Но, тем не менее, я всегда получаюОшибка 400: плохой шлюз при доступе к чему-либо со «специальным символом», например http://localhost:2021/1%3As.aspx или http://localhost:2021/1:s.aspx

В проектах определенно используется среда выполнения .NET 4. Что здесь не так?

1 Ответ

4 голосов
/ 11 января 2012

Я сам отвечу на вопрос, как выяснил за это время:

Вы должны щелкнуть переключатель реестра, чтобы он заработал:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET

DWord Value Name: VerificationCompatibility 
Value Data: 1

См. в соответствии с MS KB Статья для более подробной информации.

Для моно пользователей: значение реестра учитывается в системах Windows.В системах, отличных от Windows, вы можете изменить поведение, добавив раздел monoSettings в ваш web.config:

<monoSettings verificationCompatibility="1" />
<httpRuntime requestValidationMode="2.0"
    requestPathInvalidCharacters=""
    relaxedUrlToFileSystemMapping="true"
/>
...