我有一個簡單的SingulaR示例,我已經添加到傳統的ASP.Net MVC應用程序。什麼原因導致SignalR接收到net :: ERR_CONNECTION_RESET連接?
以下是各個部分:
OWIN啓動類
[assembly: OwinStartup(typeof (Startup))]
namespace MyApp.Web
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
SignalR樞紐
using System.Collections.Generic;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace MyApp.Web
{
[HubName("podService")]
public class PodServiceHub : Hub
{
public PodServiceHub()
{
;
}
public IEnumerable<string> GetMessages()
{
return new[] {"blah", "blah", "blah"};
}
}
}
服務器端門面
個using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace MyApp.Web
{
public class PodService
{
PodService(IHubConnectionContext<dynamic> clients)
{
Clients = clients;
}
public PodService()
: this(GlobalHost.ConnectionManager.GetHubContext<PodServiceHub>().Clients)
{
}
IHubConnectionContext<dynamic> Clients { get; set; }
public void SendMessageToClient(string message)
{
Clients.All.doSomething(message);
}
}
}
部分啓動的Javascript:
var podService = $.connection.podService;
...
$.extend(podService.client, {
doSomething: function(message) {
console.log("received message:" + message);
}
});
// test
$.connection.hub.start()
.done(function() {
podService.server.getMessages()
.done(function(messages) {
console.log("received message:" + message);
});
});
在由所述第一頁稱爲控制器中的一個:
_podService.SendMessageToClient("Hello from the server!");
當執行應用程序時,顯示在控制檯以下錯誤Chrome的開發工具:
WebSocket連接到'ws:// localhost:62025/signalr ?/連接運輸=的WebSockets & clientProtocol = 1.5 & connectionToken = 02LJFqBcRBWKXAOlaSwgMPWG0epV7AFl19gNjFCvA0dxD2QH8%2BC9V028Ehu8fYAFN%2FthPv65JZKfK2MgCEdihCJ0A2dMyENOcdPkhDzEwNB2WQ1X4QXe1fiZAyMbkZ1b & connectionData =%5B%7B%22name%22%3A%22podservice%22%7D%5D & TID = 6' 失敗:WebSocket的握手期間錯誤:net :: ERR_CONNECTION_RESET
然而,在這個錯誤發生後,podService.server.getMessages()返回消息從服務器打印[「blah」,「blah」,「blah」]到控制檯,隨後doSomething客戶端函數被調用打印「收到的消息:來自服務器的Hello!」。
來自客戶端和服務器的調用正在傳輸數據,所以這個錯誤似乎沒有打破應用程序。但它絕對是一個問題。上面的代碼基於Microsoft.AspNet.SignalR.Sample NuGet包生成的示例代碼,該包不顯示相同的行爲。我在我的示例和基於NuGet的示例之間唯一的區別是我已經將它添加到舊版MVC應用程序,而不是基於OWIN的純應用程序。根據評論我讀on this SO question這不應該是一個問題。
那麼,這個示例用法有什麼問題和/或什麼可能導致連接重置?
你有沒有找到解決你的問題?我面臨着同樣的... – Dunken