我刚开始将异步方法引入ASP.NET Web窗体应用程序。
我有以下代码......
using (Stream tempStream = File.Create(tmpFile))
{
using (Stream docStream = await AttachmentOperations.OpenReadAsync(document.Attachment))
{
await docStream.CopyToAsync(tempStream);
}
}
OpenReadAsync具有返回类似文件的代码....
Stream stream = File.Open(fileName, FileMode.Open);
return Task.FromResult(stream);
...当我将以下设置添加到appSettings时,代码正常工作...
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="false" />
但是我实际上需要将此设置设置为true才能在异步调用中启用对HttpContext的访问。使用aspnet:UseTaskFriendlySynchronizationContext设置为true,对CopyToAsync的调用永远不会终止,我必须终止IISExpress进程才能解锁我正在尝试复制的文件。
有谁能解释这里发生了什么?