我在我的asp.net web api应用程序中使用.asmx服务,如下所示:
[
但是这个服务什么都不返回,但反过来在HTTP响应对象中写入响应,如下所示: `[WebMethod(EnableSession = true)] [ScriptMethod(UseHttpGet = true,ResponseFormat = ResponseFormat.Json)] public void GetResearchDocsBySector(int pageCode,int resultsPerPage,string subTypeIds,int timeframe) { JavaScriptSerializer js = new JavaScriptSerializer(); IRatingsDirectDataMgr dataMgr = RemoteUtil.GetRemote();
List<ResearchDocumentDisplay> results = dataMgr.GetSolrResults(pageCode, resultsPerPage, subTypeIds, timeframe, false);
List<ResearchDocumentWidgetDisplay> resultList = new List<ResearchDocumentWidgetDisplay>();
foreach (var item in results)
{
var obj = ObjMapper<ResearchDocumentDisplay, ResearchDocumentWidgetDisplay>.Map(item);
obj.ArticleTypeName = Constants.TypeMappings[obj.ArticleTypeId];
resultList.Add(obj);
}
HttpContext.Current.Response.Write(js.Serialize(resultList));
}`
我想在json格式的webapi应用程序中使用从服务中获得的结果,我们该如何处理呢?
注意:我根本无法更改.asmx服务代码!!
答案 0 :(得分:1)
设置GetResearchDocsBySector以返回List而不是具有void返回类型并将其注入Current http内容。要做到这一点,你需要将ResearchDocumentWidgetDisplay标记为Serialisable,你可以在你的类ResearchDocumentWidgetDisplay上面添加[Serialisable]。