如何在ASP.NET Web服务中接收XML?

时间:2011-04-15 20:25:51

标签: c# asp.net xml web-services security

我有一个准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版本一起使用而改为旧版本的东西。有没有办法为我的具体方法禁用它?提前谢谢。

1 个答案:

答案 0 :(得分:4)

新的4.0 RequestValidation模型有点挑剔,但只要您的客户端发送HTTP请求Content-type标头为text/xml而不是application/x-www-form-urlencoded,它应该通过(或绕过而不是) ASP.NET RequestValidation。