ASP Web API 在不同的应用程序实例之间共享代码库

本文关键字:之间 实例 共享 代码 应用程序 API Web ASP | 更新日期: 2023-09-27 18:32:04

这个问题已经被问了几次,但我还没有找到针对我的问题的答案。

本质上,我有一个ASP Web API应用程序,可以部署任意次数(当前为50次),它将连接到不同的数据库。除了 web.config 中的数据库连接字符串和它所在的虚拟目录之外,所有内容实际上都是相同的。

现在,我们正在使用 Web 部署通过代码更新手动更新所有子目录。我们已经自动化了它,但它仍然很痛苦,尤其是当出现错误时。

只是想知道是否有办法在某处(假设站点的根目录)拥有主代码库,并在它下面只有 web.config 的虚拟目录?根据我发现的其他线程,我认为这是不可能的(尽管它们要旧得多)。

我尝试像这样设置它,在父站点下具有虚拟目录(物理上指向父站点),并在物理子目录中具有不同的web.config,但它什么也没做。

或者,在代码中动态生成数据库连接字符串是否有更好的方法?我真的不喜欢这个解决方案,但是还有另一种方法吗?

谢谢

ASP Web API 在不同的应用程序实例之间共享代码库

我也会在这里寻求API中的多租户支持。API 调用的一个入口点具有许多优势 - 统计、限制、日志记录等。

创建一个 HTTP 安全模块,以根据提供的 api 密钥选择数据库。重要的是,此映射是安全且经过良好测试的。

我也会考虑合并到一个数据库中并限制模式或其他东西,但这可能超出了这里的范围......

不需要生成连接字符串。我想说的是,您可以拥有 1 个实例和 50 个不同的配置/连接字符串,而不是 50 个实例,并且根据您当前的请求上下文,您可以选择相应的连接字符串。你可以有某种约定来命名连接字符串或类似的东西,这取决于你,然后我会创建一个连接工厂类,并在那里放置所有连接创建逻辑。

下面的链接是一个很好的起点,它确实是类似的例子。

在 ASP.NET 中动态切换数据库