gpt4 book ai didi

部署到 IIS 时,信号器客户端方法调用不一致

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

我真的被这个问题难住了,我有一个页面,用于收集有关我的 Web 应用程序中调用的方法的数据。当我从 Visual Studio 运行我的应用程序时,没有问题,一切都很好,我的所有服务器和客户端方法都按预期运行。

但是,当我将此应用程序部署到在 Windows Server 2008 R2 SP1 上运行 IIS 7.5 的 Web 服务器时,我的客户端方法并没有始终如一地触发,一切看起来都运行良好。但触发客户端事件永远不会发生。

客户端 JavaScript:

var nlog = $.connection.centralHub;
$.connection.hub.logging = true;

$(function () {
var logTable = $("#logTable");

nlog.client.logevent = function (datetime, siteName, clientConId, logLevel, message, stack, eMessage) {
var tr = $("<tr>");
tr.append($("<td>").text(datetime));
tr.append($("<td>").text(siteName));
tr.append($("<td>").text(clientConId));
tr.append($("<td>").text(logLevel));
tr.append($("<td style='white-space: pre;'>").text(message));
tr.append($("<td>").text(stack));
tr.append($("<td>").text(eMessage));
logTable.append(tr);
};
nlog.client.test = function() {
$("#test").text("spit out a test");
}
$.connection.hub.start().done(function () {
nlog.server.initialMessage();
nlog.server.test();
}, 5000);
});

服务器集线器方法:

Hub Method: CentralHub

public void InitialMessage()
{
string connId = Context.ConnectionId;
_clientTracker.InitalMessage(connId);
}

internal void InitalMessage(string connId)
{

Clients.All.logEvent(
DateTime.Now.ToString("F"),
"Harper Woods",
connId,
"info",
"Hub Started",
"No Message",
"No Message");
}

我的 IIS 网络服务器的 Google 控制台输出

  • [12:14:22 GMT-0400(东部夏令时间)] SignalR:客户端订阅了中心“centralhub”

  • [12:14:22 GMT-0400(东部夏令时间)] SignalR:正在与 '/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22centralhub%22%7D% 进行协商5D&客户端协议(protocol)=1.3'。jquery.signalR-2.0.3.js:76

  • [12:14:22 GMT-0400(东部夏令时间)] SignalR:正在尝试连接到 SSE 端点“http://tcdev.citadelsystems.com/signalr/connect?transport=serverSentEvents&” …7Hb0f69Gs1q&connectionData=%5B%7B%22name%22%3A%22centralhub%22%7D%5D&tid=2'。jquery.signalR-2.0.3.js:76
  • [12:14:22 GMT-0400(东部夏令时间)] SignalR:EventSource 已连接。jquery.signalR-2.0.3.js:76
  • [12:14:22 GMT-0400(东部夏令时间)] SignalR:现在监控保持事件状态,警告超时为 13333.333333333332,连接丢失超时为 20000。jquery.signalR-2.0.3.js:76
  • [12:14:22 GMT-0400(东部夏令时间)] SignalR:调用centralhub.InitialMessagejquery.signalR-2.0.3.js:76
  • [12:14:22 GMT-0400(东部夏令时间)] SignalR:调用centralhub.Testjquery.signalR-2.0.3.js:76
  • [12:14:22 GMT-0400(东部夏令时间)] SignalR:调用centralhub.InitialMessagejquery.signalR-2.0.3.js:76
  • [12:14:22 GMT-0400(东部夏令时间)] SignalR:调用centralhub.Test

Visual Studio 2013 的 Google 控制台输出

  • [12:17:56 GMT-0400(东部夏令时间)] SignalR:客户端订阅了集线器“centralhub”.jquery.signalR-2.0.3.js:76

  • [12:17:56 GMT-0400(东部夏令时间)] SignalR:正在与 '/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22centralhub%22%7D% 进行协商5D&客户端协议(protocol)=1.3'。jquery.signalR-2.0.3.js:76

  • [12:17:57 GMT-0400(东部夏令时间)] SignalR:正在尝试连接到 SSE 端点“http://localhost:32568/signalr/connect?transport=serverSentEvents&connectio” ...kMTNQps1lto&connectionData=%5B%7B%22name%22%3A%22centralhub%22%7D%5D&tid=3'。jquery.signalR-2.0.3.js:76

  • [12:17:57 GMT-0400(东部夏令时间)] SignalR:EventSource 已连接。jquery.signalR-2.0.3.js:76

  • [12:17:57 GMT-0400(东部夏令时间)] SignalR:现在监控保持事件状态,警告超时为 13333.333333333332,连接丢失超时为 20000。jquery.signalR-2.0.3.js:76

  • [12:17:57 GMT-0400(东部夏令时间)] SignalR:调用centralhub.InitialMessagejquery.signalR-2.0.3.js:76

  • [12:17:57 GMT-0400(东部夏令时间)] SignalR:调用centralhub.Testjquery.signalR-2.0.3.js:76

  • [12:17:57 GMT-0400(东部夏令时间)] SignalR:在中心“CentralHub”上触发客户端中心事件“logEvent”。jquery.signalR-2.0.3.js:76

  • [12:17:57 GMT-0400(东部夏令时间)] SignalR:在中心“CentralHub”上触发客户端中心事件“测试”。jquery.signalR-2.0.3.js:76

  • [12:17:57 GMT-0400(东部夏令时间)] SignalR:调用centralhub.Testjquery.signalR-2.0.3.js:76

  • [12:17:57 GMT-0400(东部夏令时间)] SignalR:调用centralhub.InitialMessage

最佳答案

好吧,我终于找到了一些关于这里发生的事情的信息。这是您为信号器设置依赖注入(inject)解析器的地方,这必须在 Global.asax 的 Application_Start() 方法中完成,您不能依赖 ninject web bootstrapper,并且不能像示例中那样将其放在 owin 启动类中ASP.NET 网站。它不会按预期运行,有时会运行,但您会错过消息。

关于部署到 IIS 时,信号器客户端方法调用不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649144/

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