Символ канала в параметре маршрута ASP.NET, вызывающий 404 - PullRequest
0 голосов
/ 24 октября 2018

У нас есть метод ASP.NET Web API со следующим маршрутом:

[System.Web.Http.Route( "api/MergeFields/{id}" )]
public virtual string Get( string id )
{
    ...
}

На большинстве наших серверов, если параметр {id} в URL содержит символ канала, он все равно будет совпадатьмаршрут: http://www.example.com/api/MergeFields/Global|Test. Однако у нас есть один сервер IIS, на котором это возвращает ошибку 404.

Кодировка символа канала не помогает: http://www.example.com/api/MergeFields/GlobalAttribute%7CTest, он все равно возвращает 404.

На этом же сервере все остальные символы в параметре {id} работают нормально.Например http://www.example.com/api/MergeFields/GlobalAttribute_Test работает.

Я искал в файле web.config что-то, что могло бы повлиять на интерпретацию символа канала в IIS или ASP.NET, но не смог найти ничего.Опять же, это только один сервер, который имеет эту проблему.На всех других наших установках персонаж канала работает нормально и соответствует этому маршруту.

1 Ответ

0 голосов
/ 04 ноября 2018

Я не могу комментировать, но в качестве решения рекомендую.
Пожалуйста, дайте мне знать, если это не работает.

Проверьте свойство HttpRuntimeSection.RelaxedUrlToFileSystemMapping, это может быть проблемой,

В вашем файле web.config вы, вероятно, должны настроить его следующим образом (.NET 4.0):

<system.web>
   <httpRuntime requestValidationMode="2.0" relaxedUrlToFileSystemMapping="true"/>
</system.web>

Я не знаю о вашей среде, но я предполагаю, что вы используете 4.0.

Edit2:
Также читайте о фильтрации запросов (служба, которая, вероятно, блокирует запрос).Хорошая информация и, возможно, несколько других глаголов, которые вы можете использовать для «белого» списка символов канала: https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/

Редактировать:
К вашему сведению, канал определен как «небезопасный символ».Я рекомендую прочитать этот документ относительно выбора символов разделителя: https://sites.google.com/site/getsnippet/javascript/ut/url-encoded-characters/-please-stop-using-unsafe-characters-in-urls

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...