500 внутренняя ошибка сервера, когда: (двоеточие) находится в конце URL-адреса WebApi. Принятие ipv6 в качестве параметра
У меня есть метод действия, который получает IP в качестве параметра.
[HttpGet]
[Route("lookup/{ipAddress}")]
public string Get(string ipaddress)
{
return ipaddress;
}
Проблема в том, когда API вызывается с IPV6 Compact в параметре, заканчивающемся на :
(двоеточие), вызов не достигает действия и получает 500 внутренних ошибок сервера без подробностей.
Работает нормально с локальным компьютером, используя VS 2013, но при развертывании в Azure, поскольку AppService IPV6 выдает внутреннюю ошибку сервера.
Уже добавил requestPathInvalidCharacters
<system.web>
<compilation debug="true" targetFramework="4.5" />
<customErrors mode="Off" />
<httpRuntime targetFramework="4.5" requestPathInvalidCharacters="<,>,*,%,&,\,?" />
</system.web>
А также установить
<modules runAllManagedModulesForAllRequests="true">
Хорошо работает на локальных IIS и IIS Express, но при развертывании на веб-сайте Azure API не работает.
1 ответ
Не могли бы вы попробовать:
Измените строку конфигурации на <... requestValidationMode = "2.0" requestPathInvalidCharacters = "*,:, &, \"...>, что происходит? Эта проблема обсуждается в Интернете, и есть несколько способов ее устранения, например, здесь:
Использование двоеточия (:) в URL с ASP.NET/IIS
2) Кодировать / декодировать его в другой символ Юникода