我有一个准REST的ASP.NET Web服务,我希望能够发布XML。我的方法看起来像这样:
[WebMethod(false, System.EnterpriseServices.TransactionOption.NotSupported)]
public void save(string saveXml)
{
XDocument saveXml = XDocument.Parse(saveXml);
....
当我尝试发布到该Web服务时,我得到了例外:
System.Web.HttpRequestValidationException: A potentially dangerous Request.Form
value was detected from the client...
根据一些搜索,我的理解是对ASP.NET页面的所有请求都会查找“<”之类的字符哪些被认为是危险的(显然这适用于我的XML)。对于单个页面,可以轻松关闭此功能,但不能关闭Web服务。我发现的唯一解决方案是将web.config中的请求验证模式更改为“2.0”。我不想因为我的一个Web服务方法不能与4.0版本一起使用而改为旧版本的东西。有没有办法为我的具体方法禁用它?提前谢谢。
答案 0 :(得分:4)
新的4.0 RequestValidation模型有点挑剔,但只要您的客户端发送HTTP请求Content-type
标头为text/xml
而不是application/x-www-form-urlencoded
,它应该通过(或绕过而不是) ASP.NET RequestValidation。