我有一个接收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="<,>,*,%,&,\,?" />
</system.web>
并设置
<modules runAllManagedModulesForAllRequests="true">
在本地IIS和IIS Express上正常工作但在部署到Azure网站时api无法正常工作。
答案 0 :(得分:0)
你可以尝试一下:
将配置字符串更改为&lt; ... requestValidationMode =“2.0”requestPathInvalidCharacters =“*,:,&amp;,\”...&gt;,会发生什么?这个问题在互联网上讨论过,有些方法可以解决,例如:
Using a colon (:) in a url with ASP.NET/IIS
2)将其编码/解码为另一个unicode字符