2016-03-10 26 views
1

在我的項目中SignalR工作正常。 但由於在Web Farm中引入了負載均衡,因此我計劃使用帶有SQL的Backplane,請參閱本文後面的文章:http://www.asp.net/signalr/overview/performance/scaleout-with-sql-serverSignalR背板沒有創建版本爲1.x的表格

如果我使用Microsoft.AspNet.SignalR 和Microsoft.AspNet.SignalR.SqlServer的最新軟件包(版本2.2.0)並選擇4.5 .Net框架,背板工作正常。但是,由於某些原因,我需要堅持使用.Net 4.0版本,而不是使用Owin。 當我安裝版本爲1.1.4或1.2.2的Microsoft.AspNet.SignalR 和Microsoft.AspNet.SignalR.SqlServer的軟件包並使用.Net 4.0時,SignalR似乎可以正常工作,但Backplane(使用SQL)可以由於在數據庫中沒有創建表,因此似乎沒有踢入。如果我啓用跟蹤,則沒有跟蹤文件。只有傳輸相關的跟蹤文件正在生成。 我使用下面的代碼在我的global.asax.cs:

// Signalr connection string 
var signalRConnectionstring = ConfigurationManager.ConnectionStrings["SignalR"].ToString(); 
GlobalHost.DependencyResolver.UseSqlServer(signalRConnectionstring); 

// Register the default hubs route: ~/signalr 
RouteTable.Routes.MapHubs(); 
+0

Signalr Core依賴於owin,所以你不能刪除它。您可以安裝第一個安裝程序包Microsoft.Owin -Version 2.1.0然後安裝 - 包Microsoft.Owin.Security - 版本2.1.0。然後安裝sql服務器。 –

+0

你有錯誤嗎?連接字符串是否具有正確的權限?你可以使用連接字符串手動連接到sql服務器嗎? –

+0

@Erkan,Owin不是SignalR的強制要求 –

回答

2

最後我能找到解決方案。這個錯誤誤導了我相信它是.NET 4.0的問題。 我的項目中沒有拋出運行時異常,所以調試沒有幫助。 當我靜態分析代碼時,發現問題出在SignalR的SQLServer的依賴關係解析器上。 下面的global.asax的線沒有得到解決的依賴(也被不扔任何異常)

GlobalHost.DependencyResolver.UseSqlServer(signalRConnectionstring); 

這是因爲我在我的項目中使用統一。

解決方案很簡單,SignalR的SQLServer必須解決後才能解決,因爲我的項目中已經有一個自定義類。 我希望我首先看到了這個方向,這會節省很多時間。