在WcfCall中返回语句JsonResult

时间:2014-02-23 21:22:15

标签: c# asp.net-mvc json wcf asp.net-mvc-4

如何在使用WCF调用时返回ActionResult的Json?

如果我使用EF和使用块进行数据库调用,则以下情况有效。

但是它向我展示了我注释掉的错误。

public JsonResult GetNames(string name)
{
    WcfWebProxy.Using(delegate(IMyWebService client)
    {
        var names = client.GetAllNames().Select(f => new {Text = f.NewNames});
        return Json(names.ToList(), JsonRequestBehavior.AllowGet);
        //Return Type Is Void
    });
}
//Return Statement Missing

1 个答案:

答案 0 :(得分:2)

您可以使用闭包:

public ActionResult GetNames(string name)
{
    ActionResult res = null;

    WcfWebProxy.Using(client =>
    {
        var names = client.GetAllNames().Select(f => new
        {
            Text = f.NewNames
        });
        res = Json(names.ToList(), JsonRequestBehavior.AllowGet);
    });

   return res;
}

当然,如果WcfWebProxy.Using方法是异步的,您应该使用异步控制器,如本MSDN文章所示:http://msdn.microsoft.com/en-us/library/ee728598(v=vs.100).aspx

顺便说一句,如果您正在处理I / O密集型操作(例如调用WCF服务),那么您应该考虑这种方式。使用.NET 4.5和async/await模式,您的代码甚至可以读取。