2

我正在尝试为使用 SignalR 的现有数据库和 Web 应用程序开发一个可行的 CI/部署过程。应用程序架构非常复杂,有多个组件监视数据库的变化。

我希望能够使用数据层应用程序框架 (DACFx) 来部署 DACPAC 文件并使用注册过程来检测对数据库架构的进程外更改。目前,因为 SignalR 修改了数据库,所以这是不可能的。

我正在尝试确定是否可以将 SignalR 与数据层应用程序一起成功使用,不必求助于手动将 SignalR 表添加到架构中。

我在每个组件的 Startup.cs 中使用了类似于以下的SignalR代码:

[assembly: OwinStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var connectionStringName = ConfigurationManager.AppSettings["SignalR.DatabaseInstanceName"] ?? "MyApp";
            var connectionstring = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;

            var sqlScaleOutConfiguration = new SqlScaleoutConfiguration(connectionstring);
            GlobalHost.DependencyResolver.UseSqlServer(sqlScaleOutConfiguration);

            app.MapSignalR();
        }
    }
}

在我的 Web.config 或 app.config 中,我有一个“SignalR”连接字符串,它指向与主应用程序不同的数据库。例如,“MyApp”用于应用程序数据,“SignalR”用于 SignalR 数据。

我的理解是,以这种方式配置 SignalR 时,它将创建:

  1. 用于跟踪连接的数据库表。
  2. 对数据库和相关联的清理 SP 的服务订阅。

我遇到的问题是数据库表是在我的主应用程序数据库中创建的,而且 SignalR 似乎没有提供用于取消注册服务的 API。

我做对了吗 - SignalR 是在创建服务订阅还是其他什么?

发生了什么事 - 为什么我的配置被忽略?

是否可以以一种优雅的方式进行清理,或者我是否需要在部署期间手动删除服务订阅?

4

0 回答 0