我正在向servicestack端点提交一个包含值Body=%3Ch2%3E (Body=<h1>)
的查询字符串。其结果是:
从客户端检测到一个潜在危险的Request.QueryString值(Body=\"\")。
我知道在MVC 4中,如果您用AllowHtml来装饰模型中的字段,您可以允许特定字段的Html内容,如下所示:
AllowHtml公共字符串体{ get;set;}
这样做了,但错误仍然存在。怀疑这是服务堆栈没有正确参与验证过程,因此通过创建具有相同模型的纯MVC 4控制器进行测试,这很好。
然而,我需要一个ServiceStack的解决方案。他们的文档很薄,谷歌搜索也没有任何线索。
发布于 2012-12-28 14:43:22
看起来,您正在ASP.NET应用程序中承载您的ASP.NET服务。
可以将以下内容添加到<system.web>
文件的web.config部分,以便禁用整个应用程序的请求验证:
<system.web>
<httpRuntime requestValidationMode="2.0" />
...
</system.web>
如果您只想禁用特定端点的请求验证,而不是整个应用程序,请在<location>
中使用web.config标记:
<location path="hello">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>
这将禁用对应用程序中所有/hello
端点的请求验证。例如,/hello?Body=%3Ch2%3E
可以工作,但/bar?Body=%3Ch2%3E
不能工作。
您可以在ASP.NET中在following MSDN article
中阅读更多关于请求验证的内容。
显然,如果您是自我托管您的ServiceStack服务,那么您不应该担心这一点。
https://stackoverflow.com/questions/14076483
复制