Asp.net WCF返回xml而不是JSON

Asp.net WCF返回xml而不是JSON,asp.net,xml,json,wcf,Asp.net,Xml,Json,Wcf,我在客户端项目中使用来自其他项目的web服务(尽管两个项目在同一个解决方案中) 我期待着JSON发布,但无法获取它 [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json,RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "FetchSitePerformanceDT/{fro

我在客户端项目中使用来自其他项目的web服务(尽管两个项目在同一个解决方案中)

我期待着JSON发布,但无法获取它

[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json,RequestFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "FetchSitePerformanceDT/{fromDate}/{country}")]
    public DataTable FetchSitePerformanceDT(string fromDate, string country)
    {
        SitePerformance objSiteP = new SitePerformance();
        DataTable dt = new DataTable();
        dt = objSiteP.getPerformanceByDateAndCountryAsDataTable(fromDate, country);
        return dt;
    }
此函数返回如下输出:

{"FetchSitePerformanceDTResult":"<DataTable xmlns=\"http:\/\/schemas.datacontract.org\/2004\/07\/System.Data\"><xs:schema id=\"NewDataSet\" xmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\" xmlns=\"\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\"><xs:element name=\"NewDataSet\" msdata:IsDataSet=\"true\" msdata:MainDataTable=\"DailyBingRTT_Performance_Last7Days_Result\" msdata:UseCurrentLocale=\"true\"><xs:complexType><xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\"><xs:element name=\"DailyBingRTT_Performance_Last7Days_Result\"><xs:complexType><xs:sequence><xs:element name=\"DailyTimeStamp\" type=\"xs:string\" minOccurs=\"0\"\/><xs:element name=\"Performance\" type=\"xs:string\" minOccurs=\"0\"\/><\/xs:sequence><\/xs:complexType><\/xs:element><\/xs:choice><\/xs:complexType><\/xs:element><\/xs:schema><diffgr:diffgram xmlns:diffgr=\"urn:schemas-microsoft-com:xml-diffgram-v1\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\"><DocumentElement xmlns=\"\"><DailyBingRTT_Performance_Last7Days_Result diffgr:id=\"DailyBingRTT_Performance_Last7Days_Result1\" msdata:rowOrder=\"0\" diffgr:hasChanges=\"inserted\"><DailyTimeStamp>Nov 03, 2013<\/DailyTimeStamp><Performance>106917<\/Performance><\/DailyBingRTT_Performance_Last7Days_Result><DailyBingRTT_Performance_Last7Days_Result diffgr:id=\"DailyBingRTT_Performance_Last7Days_Result2\" msdata:rowOrder=\"1\" diffgr:hasChanges=\"inserted\"><DailyTimeStamp>Nov 04, 2013<\/DailyTimeStamp><Performance>119542<\/Performance><\/DailyBingRTT_Performance_Last7Days_Result><DailyBingRTT_Performance_Last7Days_Result diffgr:id=\"DailyBingRTT_Performance_Last7Days_Result3\" msdata:rowOrder=\"2\" diffgr:hasChanges=\"inserted\"><DailyTimeStamp>Nov 05, 2013<\/DailyTimeStamp><Performance>106917<\/Performance><\/DailyBingRTT_Performance_Last7Days_Result><DailyBingRTT_Performance_Last7Days_Result diffgr:id=\"DailyBingRTT_Performance_Last7Days_Result4\" msdata:rowOrder=\"3\" diffgr:hasChanges=\"inserted\"><DailyTimeStamp>Nov 06, 2013<\/DailyTimeStamp><Performance>119542<\/Performance><\/DailyBingRTT_Performance_Last7Days_Result><DailyBingRTT_Performance_Last7Days_Result diffgr:id=\"DailyBingRTT_Performance_Last7Days_Result5\" msdata:rowOrder=\"4\" diffgr:hasChanges=\"inserted\"><DailyTimeStamp>Nov 07, 2013<\/DailyTimeStamp><Performance>106917<\/Performance><\/DailyBingRTT_Performance_Last7Days_Result><DailyBingRTT_Performance_Last7Days_Result diffgr:id=\"DailyBingRTT_Performance_Last7Days_Result6\" msdata:rowOrder=\"5\" diffgr:hasChanges=\"inserted\"><DailyTimeStamp>Nov 08, 2013<\/DailyTimeStamp><Performance>119542<\/Performance><\/DailyBingRTT_Performance_Last7Days_Result><DailyBingRTT_Performance_Last7Days_Result diffgr:id=\"DailyBingRTT_Performance_Last7Days_Result7\" msdata:rowOrder=\"6\" diffgr:hasChanges=\"inserted\"><DailyTimeStamp>Nov 09, 2013<\/DailyTimeStamp><Performance>106917<\/Performance><\/DailyBingRTT_Performance_Last7Days_Result><\/DocumentElement><\/diffgr:diffgram><\/DataTable>"}
[{"DailyTimeStamp":"Nov 03, 2013","Performance":106917},{"DailyTimeStamp":"Nov 04, 2013","Performance":119542},{"DailyTimeStamp":"Nov 05, 2013","Performance":106917},{"DailyTimeStamp":"Nov 06, 2013","Performance":119542},{"DailyTimeStamp":"Nov 07, 2013","Performance":106917},{"DailyTimeStamp":"Nov 08, 2013","Performance":119542},{"DailyTimeStamp":"Nov 09, 2013","Performance":106917}]
谁能帮我一下我的第一个web服务方法有什么问题吗。
感谢您阅读了这么长的问题。

您的问题中缺少的主要内容是日常工作表现\u过去7天\u结果

这是自定义生成类还是数据表?结构是什么

解决办法如下:

Class Performance { 
  publc datetime DailyTimeStamp { get; set;}
  public int performance ... 
}

List<Performance> ... 

return serializer.Serialize(rows);
类性能{
publc datetime DailyTimeStamp{get;set;}
公共int性能。。。
}
列表
返回序列化程序。序列化(行);

不要从Web服务返回
数据表。您正在使需要通过导线传输的负载变得不必要的重

DataTable
对象不仅包含数据,还包含模式信息。不仅这些信息对非Microsoft客户机没有用处,而且这些模式信息还增加了要传输的数据的大小


而是创建一个DTO(数据传输对象),并将这些数据的集合发送到客户端。

您是说函数应该始终是list类型的吗?我在回答中假设您正在查找输出:[{“DailyTimeStamp”:“2013年11月3日”,“性能”:106917}因此,您需要提供您正在寻找的自定义类。否则序列化程序将永远不会知道serliaze格式是什么。我正在尝试使用已由.net生成的代码,因为我们可以看到webInvoke中的属性为“responseformat=JSON”。如果属性正确,那么为什么输出不是JSON?请参考:如果您想了解更多关于我所说内容的信息,请转到此处::谢谢朋友,如果我发送列表对象作为回报是否可以?是的,这是首选方法。让WCF将该响应序列化为JSON,然后让客户端根据需要进行解析。
Class Performance { 
  publc datetime DailyTimeStamp { get; set;}
  public int performance ... 
}

List<Performance> ... 

return serializer.Serialize(rows);