Ajax 发送xml原始数据始终为空

Ajax 发送xml原始数据始终为空,ajax,asp.net-web-api,Ajax,Asp.net Web Api,我正在努力将xml原始数据发布到我的webapi控制器,传递的值在控制器端总是空的 这是我的代码: 请求 Query.support.cors = true; $.ajax({ type: "POST", url: axForm.EndPoint + "api/items/PostXmlData", contentType: "application/xml", data: {xmlD

我正在努力将xml原始数据发布到我的webapi控制器,传递的值在控制器端总是空的

这是我的代码:

请求

Query.support.cors = true;
        $.ajax({
            type: "POST",
            url: axForm.EndPoint + "api/items/PostXmlData",
            contentType: "application/xml",
            data: {xmlData: axForm.QvXmlForm},
            async: false,
            success: function (response) { 
                $('#tab1').append(response);
            },
            error: function (xhr, ajaxOptions, thrownError) { 
                //alert(xhr.responseText); 
            }
        }); 

    }
  • webapi方法

    [ActionName("PostXmlData")]
    [System.Web.Http.AcceptVerbs("POST")]
    [System.Web.Http.HttpPost]
    public IHttpActionResult PostXmlData([FromBody]string xmlData)
    {
        ...
    }
    
  • 已发送xml数据:

我解决了这个问题。 对于这个ajax调用,我只使用一个简单类型,而不是复杂类型。 下面的链接帮助了我:

在处理简单类型时,ajax调用的数据部分必须如下所示:

data: {"": axForm.QvXmlForm}
我感谢你的帮助


Patric

试试这个,我不会把它作为答案发布,因为我自己也没有试过
public IHttpActionResult PostXmlData(){string xml=”“;如果(Request.InputStream!=null){var stream=new StreamReader(Request.InputStream);var xml=stream.ReadToEnd();//可能对xml进行了编码,请在使用之前对其进行解码。}
是否有需要“xmlData”的原因作为字符串而不是反序列化对象?处理强类型对象比处理字符串容易得多。