我是asp.net MVC的新手。 我目前正在重新编写一个应用程序,该应用程序最初是使用asp v #.net 4.5从asp c #.net 4.5开发的。 MVC。
我已经使用mvc simplemembership提供程序设计了登录屏幕。但问题是该应用程序为不同的办公地点使用多个数据库。即登录用户将被提供下拉列表框(站点)以选择除用户名和位置之外的位置。密码。根据所选的位置,应用程序应查看不同数据库中的用户详细信息。
以下是现有应用程序中多个连接字符串的显示方式。
<appSettings>
<add key="DBConnection_bk" value="Server=server1;UID=sa;PWD=*****;pooling=false;connect timeout=800;database=bangkong;"/>
<add key="DBConnection_dxb" value="Server=server1;UID=sa;PWD=*****;pooling=false;connect timeout=800;database=dubai;"/>
<add key="DBConnection_hk" value="Server=server1;UID=sa;PWD=*****;pooling=false;connect timeout=800;database=Hongkong;"/>
<add key="DBConnection_syd" value="Server=server1;UID=sa;PWD=*****;pooling=false;connect timeout=800;database=sydney;"/>
<add key="DBConnection_sha" value="Server=server1;UID=sa;PWD=*****;pooling=false;connect timeout=800;database=shanghai;"/>
<add key="crServerName" value="server1" />
<add key="crLogin" value="sa" />
<add key="crPassword" value="*****" />
<add key="crDBConnection_bk" value="bangkong" />
<add key="crDBConnection_dxb" value="dubai" />
<add key="crDBConnection_hk" value="hongkong" />
<add key="crDBConnection_syd" value="sydney" />
<add key="crDBConnection_sha" value="shanghai" />
</appSettings>
我的问题是我可以使用MVC 4存档相同的功能吗?即根据所选的下拉列表框(站点)值,我可以在内部选择连接字符串吗?
我也愿意接受建议。如果上面的方法不正确,那么存档的最佳方式是什么?
提前致谢!
答案 0 :(得分:1)
您应该从代码和配置动态构建连接字符串。
您可以在配置文件中存储可能的目标服务器和数据库,以及连接超时和池等设置,但每个设置都是单独的配置值,而不是在连接字符串中反复复制它们。
使用服务器和数据库列表构建站点组合框,并根据用户输入和配置设置构建连接字符串。
public bool TryLogin(out connectionString)
{
// set connectionString using input controls and config settings, as you see fit
using (var cn = new SqlConnection(connectionString))
{
try
{
cn.Open();
cn.Close();
}
catch (SqlException ex)
{
// connection attempt failed
return false;
}
// connection attempt succeeded, connection string proven to be valid
return true;
}
}
我还建议你在web.config文件中查看how to make your own configuration elements。这有助于强制您的设置输入,并使代码中的使用更加清晰。
这样做,您的配置文件可能最终会出现这样的情况:
<dbSettings timeout="800" pooling="false">
<possibleDbs>
<db server="server1" database="bangkong"/>
<db server="server1" database="shangai"/>
<!-- etc -->
</possibleDbs>
</dbSettings>
正如您所看到的,这更清洁,更安全。根据您的要求,您可能会做得更好。