我有一个操作方法,它接收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="<,>,*,%,&,,?" />
</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字符