我们有一个正在发布的“预编译”应用。当我们将它部署到服务器时,它会立即更新,不会中断,也不会暂停。这非常重要,因为该应用程序被1000多家公司使用
然后我们添加了SignalR。
反过来又带来了OWIN依赖。
现在,当我们更新时,预编译的应用程序会窒息9-10秒。 w3wp跳转到100%cpu负载。
我描述了进程cpu使用情况,我在最耗时的调用堆栈中看到了这一点:
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start
Microsoft.Owin.Host.SystemWeb.OwinCallContext.AcceptCallback
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start
Microsoft.Owin.Host.SystemWeb.OwinCallContext.AcceptCallback
System.Web.WebSocketPipeline+<>c__DisplayClass6.<ProcessRequestImplAsync>b__3
System.Web.Util.SynchronizationHelper.SafeWrapCallback
System.Web.Util.SynchronizationHelper.QueueSynchronous
System.Web.WebSocketPipeline+<ProcessRequestImplAsync>d__8.MoveNext
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start
System.Web.WebSocketPipeline.ProcessRequest
//...skipped
等等,什么? “CompilerServices”?
显然,OWIN正在做背景上的一些编译工作......或者是其他什么?
有人面对这个吗?任何解决方法?
SignalR在启动期间做了什么?
更新:我们尝试EnableJavaScriptProxies = false;
我们也尝试了自己的IAssemblyLocator
- 两者都没有帮助。