我已经去了我的ASP.NET MVC异步控制器中的以下内容。我意识到我在尝试序列化一项任务。我不想打电话给speakers1.llult结果,因为这似乎打败了异步的目的。如何获得序列化异步结果工作
有没有适当的异步方式,我可以实现这种序列化?
public async Task<ActionResult> Index()
{
Task<List<Speaker>> speakersAll1 =
_context.
Speakers.
Include(a => a.Sessions.
Select(b => b.Tenant)).
ToListAsync();
foreach (var speaker in await speakersAll1)
{
speaker.ImageUrl = "#";
}
byte[] objectDataAsStream;
BinaryFormatter binaryFormatter = new BinaryFormatter();
using (MemoryStream memoryStream = new MemoryStream())
{
binaryFormatter.Serialize(memoryStream, speakersAll1);
objectDataAsStream = memoryStream.ToArray();
}
return View("Index", "_Layout", objectDataAsStream.Length);
}
错误:
Type 'System.Threading.Tasks.Task`1[[System.Collections.Generic.List`1[[WebApp.Models.Speaker, WebApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' in Assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.
答:每@Gusman改变的BinaryFormatter如下工作:
binaryFormatter.Serialize(memoryStream, await speakersAll1);
Ehm ...你不能序列化任务,你*不想*序列化任务,你想序列化它的结果,等待任务... – Gusman