如何在使用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
答案 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
模式,您的代码甚至可以读取。