gpt4 book ai didi

asp.net - Elmah - ASP.NET -> 多个连接字符串 -> 在代码中设置 SQL 错误日志连接字符串

转载 作者:行者123 更新时间:2023-12-02 16:45:41 26 4
gpt4 key购买 nike

我正在寻求集成 ELMAH到现有的 ASP.NET 应用程序中以进一步支持错误调查,并可以使用一些有关连接字符串的帮助。我们对应用程序部署的所有环境或我们的环境使用单个 web.config 文件,并且在运行时,应用程序通常根据 URL 决定它所处的环境。

这就是标准 block 对我们来说所希望的......

  <connectionStrings>
<add name="TESTAppDB" connectionString="Data Source=SQL-T-APPNAME.COMPANY.COM;Initial Catalog=APPNAME;User ID=USER;Password=THEPASS" providerName="System.Data.SqlClient"/>
<add name="CERTAppDB" connectionString="Data Source=SQL-C-APPNAME.COMPANY.COM;Initial Catalog=APPNAME;User ID=USER;Password=THEPASS" providerName="System.Data.SqlClient"/>
<add name="PRODAppDB" connectionString="Data Source=SQL-P-APPNAME.COMPANY.COM;Initial Catalog=APPNAME;User ID=USER;Password=THEPASS" providerName="System.Data.SqlClient"/>
</connectionStrings>

使用 Elmah,您似乎只需要指定连接字符串的名称,但如何在运行时动态地执行此操作?例如,如果我正在测试,那么我想要这个:

<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="TESTAppDB"/>
</elmah>

但如果我处于 PROD 状态:

<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="PRODAppDB"/>
</elmah>

编辑
Web 应用程序的部署实践远远超出了我想要做的范围。我需要一个代码解决方案,允许我更改 ELMAH Sql 错误日志的数据源...

我无法改变我们今天部署网络应用程序的方式。这意味着,TEST 中的任何内容都会转移到 CERT。 CERT 中的内容移至 PROD。 Web 应用程序必须能够确定它所处的环境并按此运行...

最佳答案

由于 Elmah 是开源的,因此很容易添加您自己的:-)

您需要做的就是向 SqlErrorLog 类添加一个新的静态属性,该属性将包含您要使用的连接字符串,然后更新 SqlErrorLog.ConnectionString 属性返回您的自定义连接字符串(如果它有值)。

尝试将类似的内容添加到类中(警告 - 未经测试的代码):

public static string CustomConnectionString { get; set; }

public virtual string ConnectionString
{
get
{
if (string.IsNullOrEmpty(CustomConnectionString))
{
return _connectionString;
}
else
{
return CustomConnectionString;
}
}
}

这应该足够了。现在您所要做的就是找到选择连接字符串的位置并将其更新以同时设置 SqlErrorLog.CustomConnectionString 属性。

关于asp.net - Elmah - ASP.NET -> 多个连接字符串 -> 在代码中设置 SQL 错误日志连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com