2016-09-22 3 views
0

Wir haben eine Asp.NET Web API, die Anfragen von Android und iOS Apps verarbeitet. Es traten Probleme mit GET-Anfragen auf, die Abfragezeichenfolgen enthielten. Eine URL wie folgt aus: http://localhost:10723/api/Locations?userId=32432-a4r2-f32r3 gab diese Antwort: (?)Anforderungsvalidierung in WebAPI (Azure) ändern

Ein potenziell gefährlich Request.Path Wert wurde von dem Client erkannt

Nach einigen Debuggen ich sah, dass der Abfragezeichenfolgeflag codiert worden ist, so Die eigentliche Anfrage war http://localhost:10723/api/Locations%3FuserId=32432-a4r2-f32r3, und das verursachte das Problem. Ich kann Änderungen an den Apps vornehmen, die das beheben, aber da es sich um eine App handelt, die gerade produziert wird, suche ich verzweifelt nach einer schnellen Lösung in der API, mit der die Apps jetzt funktionieren.

Was ich bisher versucht:

<httpRuntime targetFramework="4.5.1" requestValidationMode="2.0" /> 
<pages validateRequest="false" /> 

und damit verbundene Httpruntime web.config Tricks.

Ich habe auch eine benutzerdefinierte Anfrage Validator geschrieben.

Aber alles sagt mir, dass dies etwas vor der Seitenvalidierung passiert und mein Anfrageprüfer getroffen wird.

Antwort

0

konnte ich dieses Problem zu lösen, indem eine Rewrite-Regel für URL auf dem Server hinzufügen:

<system.webServer> 
    <rewrite> 
    <rules> 
     <rule name="Allowing querystrings."> 
     <match url="^(.*)\?(.*)$" /> 
     <conditions logicalGrouping="MatchAny" /> 
     <action type="Rewrite" url="{R:1}?{R:2}" /> 
     </rule> 
    </rules> 
    </rewrite> 
    </system.webServer> 
Verwandte Themen