在asp.net web api应用程序中使用.asmx服务

时间:2015-12-22 13:43:58

标签: c# asp.net web-services wcf asp.net-web-api

我在我的asp.net web api应用程序中使用.asmx服务,如下所示:

[http://i.stack.imgur.com/WyyqX.png

但是这个服务什么都不返回,但反过来在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服务代码!!

1 个答案:

答案 0 :(得分:1)

设置GetResearchDocsBySector以返回List而不是具有void返回类型并将其注入Current http内容。要做到这一点,你需要将ResearchDocumentWidgetDisplay标记为Serialisable,你可以在你的类ResearchDocumentWidgetDisplay上面添加[Serialisable]。