.net 在代码中更改ELMAH数据库
我有几个网站有独立的ELMAH数据库。我想有一个单独的网站来查看所有这些数据库 为此,我创建了一个新的ASP.NETMVC4网站。我已经添加了NuGet包“Elmah.MVC”,并在Web.config中添加了以下内容:.net 在代码中更改ELMAH数据库,.net,asp.net-mvc,connection-string,elmah,.net,Asp.net Mvc,Connection String,Elmah,我有几个网站有独立的ELMAH数据库。我想有一个单独的网站来查看所有这些数据库 为此,我创建了一个新的ASP.NETMVC4网站。我已经添加了NuGet包“Elmah.MVC”,并在Web.config中添加了以下内容: <connectionStrings> <add name="Elmah.Sql" connectionString="..." /> </connectionStrings> <elmah> <errorL
<connectionStrings>
<add name="Elmah.Sql" connectionString="..." />
</connectionStrings>
<elmah>
<errorLog type="Elmah.SqlErrorLog" connectionStringName="Elmah.Sql" />
</elmah>
这在一个数据库中运行得很好。我还可以通过更改connectionstring来切换数据库,但现在我希望能够从代码切换数据库。有没有办法做到这一点?如果您想从代码切换数据库,您将无法依赖
Web.config
。您需要将活动连接存储在如下类中:
public class DatabaseSession
{
public string ConnectionString { get; set; }
}
然后,您需要在会话中存储该实例:
Session["DatabaseSession"] = new DatabaseSession() { ConnectionString = "your connection string"; }
每次要更改数据库连接时,都需要运行该行。然后,当您想要连接到数据库时,需要将其从会话中拉出
但是,您可以将所有不同的连接字符串存储在Web.config
中,让用户从该列表中进行选择-您无法利用它来确定连接字符串。
注意:您也可以将连接字符串存储在会话中会话[“DatabaseConnection”]=“您的连接字符串”
ELMAH有一个用于自定义错误日志的类。您只需要像这样实现这个类
public class YourErrorLog : SqlErrorLog
{
public override string ConnectionString
{
get
{
//return any connection string that you want
}
}
}
在此实现中,您可以读取所需的任何连接字符串。
最后你可以告诉ELMAH知道错误日志
<elmah>
<errorLog type="YourAssembly.YourErrorLog, YourAssembly" connectionStringName="elmah-sqlserver" />
</elmah>
你可以看到细节
我还发现了你的一个例子
希望有帮助。我正在运行时检索连接字符串,因此来自ThangChung的选项对我无效。但是我做了一些小的改变,使它工作了
SqlErrorLog,这两个构造函数都是必需的
public class ElmahSqlErrorLog : SqlErrorLog
{
public override string ConnectionString
{
get { return SettingsXmlService.GetConnectionString(); }
}
public ElmahSqlErrorLog(IDictionary config) : base(config)
{
}
public ElmahSqlErrorLog(string connectionString) : base(connectionString)
{
}
}
web.config(在system.webServer之后添加)
connectionString的值并不重要,因为我们在运行时检索它,但它不能为空。Man我多么喜欢这个网站!
<elmah>
<errorLog type="Business.Infrastructure.Elmah.ElmahSqlErrorLog, Business" connectionString="-" applicationName="Topsite" />
</elmah>