1

J'ai une méthode d'action qui reçoit IP comme paramètre.Erreur interne du serveur 500 lorsque: (deux points) se trouve à la fin de WebApi Url. Accepter ipv6 comme param

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

Le problème est lorsque l'api est appelée avec IPV6 Compact dans le paramètre se terminant par : (deux points), l'appel ne parvient pas à l'action et obtenir 500 erreur interne du serveur avec aucun détail.

Fonctionne correctement avec la machine locale L'utilisation de VS 2013 mais lors du déploiement sur Azure en tant qu'AppService IPV6 génère une erreur interne au serveur.

Déjà ajouté le requestPathInvalidCharacters

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

Et également définir les

<modules runAllManagedModulesForAllRequests="true"> 

fonctionne très bien sur IIS local et IIS Express, mais lorsqu'il est déployé sur le site Web Azure api ne fonctionne pas.

+0

également définir les:

Répondre

0

Pourriez-vous essayer:

Modifier la chaîne de configuration pour les < ... requestValidationMode = "2.0" requestPathInvalidCharacters = "*,:, &, \" ...>, ce qui se passe? Ce problème est discuté dans l'Internet, et des façons de résoudre sont là, par exemple ici:

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

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

ASP.NET MVC Colon in URL

2) Coder/décoder dans l'autre caractère unicode