500内部服务器错误,当:(冒号)位于WebApi Url的末尾时.接受ipv6作为参数



我有一个操作方法,它接收IP作为参数。

[HttpGet]
[Route("lookup/{ipAddress}")]
public string Get(string ipaddress)
{
    return ipaddress;
}

问题是,当使用以:(冒号)结尾的参数中的IPV6 Compact调用api时,调用没有到达操作,并得到500内部服务器错误,没有详细信息。

使用VS 2013在本地计算机上运行良好,但当作为AppService IPV6部署到Azure时会出现内部服务器错误。

已添加requestPathInvalidCharacters

<system.web>
    <compilation debug="true" targetFramework="4.5" />
    <customErrors mode="Off" />
    <httpRuntime targetFramework="4.5" requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,,?" />
</system.web>

并设置

<modules runAllManagedModulesForAllRequests="true">

在本地IIS和IIS express上运行良好,但部署到Azure网站时,api不起作用。

你能试试吗:

将配置字符串更改为<。。。requestValidationMode="2.0"requestPathInvalidCharacters="*,:,&,\"…>,会发生什么?这个问题在互联网上讨论过,有一些解决方法,例如:

http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx

在带有ASP.NET/IIS 的url中使用冒号(:)

URL 中的ASP.NET MVC Colon

2) 将其编码/解码为其他unicode字符

最新更新