从ASP.NET Web服务检索XML数据时出现问题

时间:2010-08-26 16:53:35

标签: asp.net web-services jquery

我正在尝试调用Web服务从数据库中检索一些XML数据。如果我使用静态文件,Ajax调用工作正常,例如像这样:

$.ajax({
    type: "GET",
    url: "test2.xml",
    data: buildXMLDataRequestObject(),
    dataType: "xml",
    success: getXMLDataSucceeded,
    error: getXMLDataFailed
});

但是当我尝试调用Web服务时失败,例如像这样:

$.ajax({
    type: "POST",
    url: "Services/CheckOutService.svc/GetXMLData",
    data: buildXMLDataRequestObject(),
    dataType: "xml",
    success: getXMLDataSucceeded,
    error: getXMLDataFailed
});

我得到的错误是:

  

“收到的消息有一个   意外的消息格式'Raw'。该   预期的消息格式   操作是'Xml','Json'。这个可以   因为WebContentTypeMapper具有   尚未在绑定上配置。   请参阅文档   WebContentTypeMapper更多   方式“。

GetXMLData方法如下所示:

// Interface
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
string GetXMLData(XMLDataRequest request);
...
// Implementation
public string GetXMLData(XMLDataRequest request)
{
    request.ShopperId = ShopperId;
    return checkOutManager.GetXMLData(request);
}   

GetXMLData方法已配置为返回XML,并且Ajax调用的数据类型设置为XML,因此我非常对导致错误的原因感到困惑。

编辑:如果我稍微改变$ .ajax()调用以便指定contentType,我会收到此错误:

  

根级别的数据无效。   第1行,第1位。

我尝试过contentType:“text / xml”和contentType:“application / xml”,两者都给出了同样的错误。

编辑:昨天(8月30日)我注意到如果我省略了ajax调用的data参数,服务调用就会成功。我想有一些关于JSON对象导致问题的事情。现在我已经在应用程序的服务器端实现了这个功能,但是我打算在我有时间的时候再次访问它。

1 个答案:

答案 0 :(得分:0)

我的第一个猜测是内容类型错误。当你使用Fiddler或类似的东西观察流时,你看到了什么?