在以下情况下出现500内部服务器错误:(冒号)位于WebApi Url的末尾。接受ipv6作为参数

时间:2016-04-19 06:23:06

标签: c# asp.net-web-api asp.net-web-api2 azure-web-sites http-error

我有一个接收IP作为参数的动作方法。

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

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

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

已添加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无法正常工作。

1 个答案:

答案 0 :(得分:0)

你可以尝试一下:

将配置字符串更改为&lt; ... requestValidationMode =“2.0”requestPathInvalidCharacters =“*,:,&amp;,\”...&gt;,会发生什么?这个问题在互联网上讨论过,有些方法可以解决,例如:

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

Using a colon (:) in a url with ASP.NET/IIS

ASP.NET MVC Colon in URL

2)将其编码/解码为另一个unicode字符