在 .NET 的世界里,我还是个婴儿,我被赋予了一项我似乎无法解决的任务。
我需要一个应用程序来连接到多个数据库。数据库具有静态 IP 地址。
因此,基本上当用户单击按钮 database1 时,它将转到 IP1,如果他们单击 database2,它会自动路由到 IP2。
我觉得我忽略了一些可能如此简单的事情。
谢谢
在 .NET 的世界里,我还是个婴儿,我被赋予了一项我似乎无法解决的任务。
我需要一个应用程序来连接到多个数据库。数据库具有静态 IP 地址。
因此,基本上当用户单击按钮 database1 时,它将转到 IP1,如果他们单击 database2,它会自动路由到 IP2。
我觉得我忽略了一些可能如此简单的事情。
谢谢
1) 在 web.config 文件中有 2 个连接。2) 在按钮上单击事件是指第一个 IP,在另一个按钮上单击连接另一个 IP。
以前从未这样做过,但有一些想法来实现这一点。在我的项目中,我引用了 2 个数据库。PostgreSQL 和甲骨文。在我的应用程序中,我有几个提供者类实现数据库访问并为此使用 Executor 类。要创建此执行程序的实例,我需要使用我的数据库的 IP(在本地网络中)传递连接字符串。我从 Web.config 文件中收到的连接字符串,例如
//Here is the connection strings with IP, Login, and DBname from web.config You need to configure it dynamicaly
private string PostgreSQLConnection = WebConfigurationManager.ConnectionStrings["PostgreSQLConnection"].ConnectionString;
private string OracleConnection = WebConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
using (PostgreSQLExecutor executor = new PostgreSQLExecutor(PostgreSQLConnection))
{
executor.ExecuteQuery(@"query");
}
using (OracleSQLExecutor executor = new OracleSQLExecutor(OracleConnection))
{
executor.ExecuteQuery(@"query");
}
将任何字符串作为连接字符串传递是没有问题的。我不知道你的应用程序使用什么数据库访问库,但我确信它有你的类女巫来配置你的会话,就像我的例子一样。所以,我认为你只需要找到你的数据库配置类并实现动态配置逻辑。最好用这样的数据库部分创建路由。
routes.MapRoute(
name: "Default",
url: "{databaseSection}/{controller}/{action}/{id}",
defaults: new { databaseSection = "sectionName1", controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { databaseSection = "sectionName1|sectionName2" }
);
因此,如果应用程序将 url 切换到 site.com/sectionName2/home/index,您可以检索部分名称并将您的数据库访问配置为全局行为。例如在 global.asax Application_BeginRequest 事件中
protected void Application_BeginRequest(object sender, EventArgs e)
{
string section = Request.RequestContext.RouteData.Values["databaseSection"].ToString();
if(section == sectionName2)
{
do some stuff to configure your database session
}
else
{
default behavior
}
}
或者,您可以为此使用 cookie。希望能帮助到你。对不起我的英语/: