WebForms:当UseTaskFriendlySynchronizationContext为true时,CopyToAsync永远不会终止

时间:2016-03-22 08:42:47

标签: asp.net webforms async-await .net-4.5.2

我刚开始将异步方法引入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进程才能解锁我正在尝试复制的文件。

有谁能解释这里发生了什么?

0 个答案:

没有答案