将TaskFriendlySynchronizationContext与同一项目中的WebForms和WebAPI一起使



我有一个遗留应用程序,它使用我需要扩展的WebForms。我为我的新功能引入了WebAPI。在我开始使用异步等待之前,一切都很好。

在WebAPI中,UseTaskFriendlySynchronizationContext=false将导致HttpContext为null。将其设置为true可修复此问题。

在WebForms中,UseTaskFriendlySynchronizationContext=true将导致某些页面永远不会返回。这就像IIS永远不会返回响应一样。将其设置为false可以修复此问题。

有没有办法让WebAPI为true,而WebForms为false?

不,不可能将其设置在该级别。ASP.NET运行时在其进程(从技术上讲是应用程序域)中必须只使用一个实现。

我的建议是调查您的WebForms代码,并确定它与新的SyncCtx死锁的原因。绝大多数代码应该都能正常工作,所以肯定有什么不寻常的地方。

最新更新