我正在开发的 Web 应用程序使用 log4net 进行日志记录。该项目的一个要求是连接字符串应该被加密。我如何告诉 log4net 使用解密的值?
例如:
<log4net>
<root>
<level value="Debug"/>
<appender-ref ref="AdoNetAppender"/>
</root>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1"/>
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<connectionString value="encryptedconnectionstringhere=="/>
有没有办法做到这一点?
最佳答案
在实现drumboog 的回答时,由于无限递归方法调用,我遇到了stackoverflow 异常。这基本上是我最终使用的。
public class CustomAdoNetAppender : AdoNetAppender
{
private string _connectionString;
protected override string ResolveConnectionString(out string connectionStringContext)
{
if(string.IsNullOrEmpty(_connectionString))
{
var decrypt = new MyDecyptionLib();
_connectionString = decrypt.MyDecryptionFunction(ConfigurationManager.AppSettings["Connection"]);
}
connectionStringContext = _connectionString;
return connectionStringContext;
}
}
...以及在 log4net 配置部分
<appender name="AdoNetAppender" type="My.Name.Space.To.CustomAdoNetAppender">
关于asp.net - 如何让 log4net 从 web.config 解密加密的连接字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11659264/