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

时间:2016-01-26 06:28:17

标签: c# asp.net asp.net-web-api web-config

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

基本上我有一个ASP Web API应用程序可以任意次数(目前为50个),它将连接到不同的数据库。除了web.config中的数据库连接字符串和它所在的虚拟目录外,一切都完全相同。

目前,我们正在使用Web部署手动更新所有带有代码更新的子目录。我们已将其自动化,但仍然很痛苦,尤其是在出现错误时。

只是想知道是否有办法将主代码库放在某处(让我们说网站的根目录),只有web.config下有虚拟目录?我认为这不可能基于我找到的其他线程(虽然它们更老了)。

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

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

由于

2 个答案:

答案 0 :(得分:2)

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

根据提供的api密钥创建HTTP安全模块以选择数据库。重要的是,这种映射是安全的并经过充分测试

我还会考虑合并到一个数据库中并限制架构或其他东西,但这可能超出了范围......

答案 1 :(得分:1)

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

下面的链接是一个很好的起点,它是一个非常相似的例子。

Switching dynamicaly database in ASP.NET