Ответ 1
IIS предотвращает попадание плюсовых знаков в элементы URL-адреса.
Чтобы отключить эту функцию, в web.config
:
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>
Я работаю с проектом asp.net web api, и мне нужно передать номер мобильного телефона через сообщение. Но я не могу вернуть знак плюса.
мой маршрут:
config.Routes.MapHttpRoute(
name: "SmsRoute",
routeTemplate: "rest/sms/{country}/{company}/phone/{mobilenumber}",
defaults: new { controller = "Sms", action = "PostSms" });
контроллер:
public HttpResponseMessage PostSms(string country, string company, string mobilenumber)
{
return Request.CreateResponse( HttpStatusCode.Created );
}
Когда я запускаю этот метод post на fiddler:
http://index.html/rest/sms/se/company/phone/46700101010/messages/out
Я получаю этот ответ:
Но я хочу, чтобы он смог показать мне знак плюса.
IIS предотвращает попадание плюсовых знаков в элементы URL-адреса.
Чтобы отключить эту функцию, в web.config
:
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>
Кодировать +
:
Замените входной поток:
http://index.html/rest/sms/se/company/phone/%2B46700101010/messages/out
Также см.: AJAX POST и знак плюса (+) - как кодировать?
Это общая аномалия, с которой мы сталкиваемся при добавлении параметров в URL. Здесь вы можете иметь намек на то, что ваш OP и что вам может понадобиться при более позднем запуске
У вас может быть множество параметров, как для +
, которые вы можете закодировать в своем java файле script, используя
encodeURIComponent();
А также для вашей легкости, если вы хотите добавить какие-либо специальные символы в ваш url, например, .
, просто установите свойство relaxedUrlToFileSystemMapping
в свой web.config
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
Или вы можете просто добавить или удалить некоторые из символов, чтобы заблокировать/разрешить использование requestPathInvalidCharacters
в web.config
<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,:,\,?"/>
Спасибо!
Теперь я могу использовать "+" в URL, но все еще возникают проблемы с "&". Выдает ошибку 400 (Bad Request).