我已經去了我的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