3天后,这个问题让我头疼。
SignalR 没有在我的包含单个 SQL 服务器 + 负载平衡 Web 服务器的预生产环境中创建其背板 SQL 架构和表。
我已经检查过了
- WebSockets 安装在 IIS 中
- 数据库访问允许创建表和模式
- .Net 4.5 已安装并正在使用
- 已安装推荐的更新
- 此处列出的步骤已完成(除了从 Visual Studio 进行部署 - 我使用 MSBUILD 打包然后使用 WebDeploy)
我已经支持 SignalR 跟踪。只有我的跟踪条目被写入 - SignalR 没有任何内容。
如果我在发布模式下构建,一切都在我的开发环境中正常工作(包括跟踪)。
这是我的跟踪增强启动过程
//Step 1: Check tracing works
var trace = GlobalHost.TraceManager["TestTrace"];
trace.TraceInformation("Preparing to start SignalR");
//Step 2: Check DB access rights
var connectionString = ConfigurationManager.ConnectionStrings["SignalR"].ConnectionString;
var schema = Guid.NewGuid().ToString("N");
using (var sqlConn = new System.Data.SqlClient.SqlConnection(connectionString))
{
using (var sqlCmd = new System.Data.SqlClient.SqlCommand())
{
sqlConn.Open();
sqlCmd.Connection = sqlConn;
sqlCmd.CommandText = String.Format("CREATE SCHEMA [{0}]", schema);
sqlCmd.ExecuteNonQuery();
sqlCmd.CommandText = String.Format("SELECT '{0}' AS [Value] INTO [{1}].[ConnectionString]", connectionString, schema);
sqlCmd.ExecuteNonQuery();
}
}
//Step 3: Initialise SignalR
GlobalHost.DependencyResolver.UseSqlServer(connectionString);
app.MapSignalR(); //This is meant to trigger lots of logging.
//Step 4: Confirm we've successfully passed SignalR start-up
trace.TraceInformation("Finished starting SignalR");
任何帮助都会很棒。干杯。