2016-09-22 47 views
0

我们有一个处理来自Android和iOS应用程序的请求的Asp.NET web api。我们开始遇到包含查询字符串的GET请求的问题。像这样的URL:http://localhost:10723/api/Locations?userId=32432-a4r2-f32r3了这种反应:(?)从客户端检测到在WebAPI(Azure)中修改requestvalidation

有潜在危险的Request的值

一些调试,我看到查询字符串已经被编码后,使实际请求是http://localhost:10723/api/Locations%3FuserId=32432-a4r2-f32r3,并导致此问题。我可以修改应用程序来解决这个问题,但是因为这是一个现在正在生产的应用程序,所以我正在拼命寻找API的快速修复方法,以便现在可以使用这些应用程序。

我迄今为止尝试:

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

及相关的httpRuntime web.config中的技巧。

我也写了一个自定义请求验证器。

但一切都告诉我,这是发生在页面验证和我的请求验证器被击中之前发生的事情。

回答

0

我能够在服务器上添加一个重写规则URL来解决这个问题:

<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>