我正在提交包含值的查询字符串
Body=%3Ch2%3E (Body=<h1>)
到服务堆栈休息端点。结果是:
从客户端检测到潜在危险的Request.QueryString值(Body = \“&lt; h2&gt; \”)。
我知道在MVC 4中你可以允许特定字段的Html内容,如果你用[AllowHtml]装饰模型中的字段,如下所示:
[AllowHtml] public string Body {get;组; }
那样做了,但错误仍然存在。有人怀疑服务堆栈在验证过程中没有正确参与,所以通过创建一个具有相同模型的纯MVC 4控制器进行测试,并且工作正常。
但是我需要一个ServiceStack解决方案。他们的文档很薄,谷歌搜索无处可寻。
答案 0 :(得分:9)
看起来您正在ASP.NET应用程序中托管ServiceStack服务。
您可以将以下内容添加到web.config文件的<system.web>
部分,以便为整个应用程序禁用请求验证:
<system.web>
<httpRuntime requestValidationMode="2.0" />
...
</system.web>
如果您只想为特定端点禁用请求验证,而不是整个应用程序使用web.config中的<location>
标记:
<location path="hello">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>
这将禁用应用程序中所有/hello
个端点的请求验证。例如,/hello?Body=%3Ch2%3E
可以正常工作,但/bar?Body=%3Ch2%3E
将无效。
您可以在following MSDN article
中了解有关ASP.NET中请求验证的更多信息。
显然,如果您自行托管ServiceStack服务,则不应该担心这一点。