gpt4 book ai didi

iis - 调试 SignalR 挂起

转载 作者:行者123 更新时间:2023-12-02 21:04:55 25 4
gpt4 key购买 nike

Windows 7、SignalR2。

我有一些 HelloWorld SignalR 代码,可以在一个 VS2013 项目(即我的 SignalR hello world Playground)中运行。

当我将相同的代码添加到现有应用程序时,SignalR 线程“永远”在 IIS 中“挂起”。这种情况每次都会发生。

我的 SignalR 控制台如下所示:

SignalR console

我的 perfMon 计数器如下所示:

PerfMon

我的工作进程列表如下所示:

Worker Process List

我正在寻找一些关于从哪里开始调试的提示。在 Java 中,我会进行线程转储,这样我就可以很容易地看到发生了什么。

当作为调试器附加时,这些线程在 VS2013 中不可见。

IIS/DotNet 中似乎没有等效项?

这是我的中心:

 public class Ep1DataImportHub : Hub
{
public int recordsToBeProcessed = 100000;

public void DoLongOperation()
{
for (int record = 0; record <= recordsToBeProcessed; record++)
{
if (ShouldNotifyClient(record))
{
Clients.Caller.sendMessage(string.Format
("Processing item {0} of {1}", record, recordsToBeProcessed));
Thread.Sleep(10);
}
}
}

private static bool ShouldNotifyClient(int record)
{
return record % 10 == 0;
}
}

这是我的客户端,被截断为最简单的悬挂场景。

$(function () {


// Initialize the connection to the server
var realtimeNotifier = $.connection.ep1DataImportHub;
$.connection.hub.logging = true;
$.connection.hub.start();
})

有很多关于 SignalR 在使用 SignalR 1 的 IIS 中挂起的信息,但我使用的是 SignalR 2。

有人可以告诉我如何开始调试正在发生的事情吗?这个工具看起来很有趣,但我不知道它是什么https://github.com/SignalR/SignalR/issues/1335 (https://github.com/SignalR/SignalR/issues/1335)

这是卡住线程之一的托管调用堆栈

System_Web_ni!DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, Boolean, Boolean ByRef)+8f 
[[InlinedCallFrame] (System.Web.Hosting.UnsafeIISMethods.MgdExplicitFlush)] System.Web.Hosting.UnsafeIISMethods.MgdExplicitFlush(IntPtr, Boolean, BooleanByRef)
System_Web_ni!System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()+20
System_Web_ni!System.Web.HttpResponse.Flush(Boolean, Boolean)+c3
System_Web_ni!System.Web.HttpWriter.WriteFromStream(Byte[], Int32, Int32)+a0
Microsoft.Owin.Host.SystemWeb.CallStreams.DelegatingStream.Write(Byte[], Int32, Int32)+3a
Microsoft.Owin.Host.SystemWeb.CallStreams.OutputStream.Write(Byte[], Int32, Int32)+3b
Microsoft.AspNet.SignalR.Owin.ServerResponse.Write(System.ArraySegment`1)+24
Microsoft.AspNet.SignalR.Hosting.ResponseExtensions.End(Microsoft.AspNet.SignalR.Hosting.IResponse, System.String)+c8
Microsoft.AspNet.SignalR.PersistentConnection+d__f.MoveNext()+180
mscorlib_ni!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+285
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+9
mscorlib_ni!System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run()+a4
System_Web_ni!System.Web.Util.SynchronizationHelper.SafeWrapCallback(System.Action)+b4
mscorlib_ni!System.Threading.Tasks.Task.Execute()+6e
mscorlib_ni!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+285
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+9
mscorlib_ni!System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)+250
mscorlib_ni!System.Threading.Tasks.Task.ExecuteEntry(Boolean)+85
mscorlib_ni!System.Threading.ThreadPoolWorkQueue.Dispatch()+1ea
[[DebuggerU2MCatchHandlerFrame]]
[[ContextTransitionFrame]]
[[DebuggerU2MCatchHandlerFrame]]

最佳答案

您是否碰巧定义了 Application_PreSendRequestHeaders 方法,或者是否以其他方式附加到 HttpApplication.PreSendRequestHeaders 事件?

我问,因为这似乎与报告的问题相同here 。至少对于该线程中的某些人来说,删除 PreSendRequestHeaders 事件处理程序解决了该问题。

当我们 recommend you never use the PreSendRequestHeaders event ,我们正在积极working on this issue这样我们就可以修复 2.1.1。

<小时/>

如果您没有附加到 PreSendRequestHeaders 事件,我们(SignalR 团队)可以使用您的帮助。到目前为止,如果不附加 PreSendRequestHeaders 事件,我们还无法重现此问题。如果您能为我们提供一个不附加到此事件但仍以这种方式挂起的应用程序,我们将不胜感激。

之前版本的 SignalR (2.0.3) 没有向/signalr/start 发出请求,也不会遇到此挂起情况。因此,您可以通过从 SignalR 2.1.0 降级到 2.0.3 来暂时解决此问题,直到 2.1.1 发布为止。

关于iis - 调试 SignalR 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24668835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com