我正在尝试为使用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时,它将创建:
我遇到的问题是我的主应用程序数据库中正在创建数据库表,而且SignalR似乎没有提供用于取消注册服务的API。
我是否做到了这一点 - SignalR是否正在创建服务订阅,还是其他什么?
发生了什么 - 为什么我的配置会被忽略?
是否可以优雅地清理它?或者我是否需要在部署期间手动删除服务订阅?