首页 > 解决方案 > QuartzServer NET 可以解密配置文件中的连接字符串吗?

问题描述

我使用 Quartz.Server.exe 2.X 作为作业执行者。我正在使用 Quartz.Server.exe.config 来配置石英。

<quartz >
    <add key="quartz.scheduler.instanceName" value="AlyCE_LROScheduler" />
    <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
    <add key="quartz.jobStore.useProperties" value="true" />
    <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
    <add key="quartz.jobStore.tablePrefix" value="QUARTZ_" />
    <add key="quartz.jobStore.dataSource" value="defaultDS" />
    <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />
    <add key="quartz.dataSource.defaultDS.provider" value="SqlServer-20" />
    <add key="quartz.dataSource.defaultDS.connectionString" value="my connection string to encrypt/decrypt" />
</quartz>

一切正常。现在,出于安全原因,我想加密连接字符串。

有没有办法让 Quartz.Server.exe 理解加密的连接字符串?

谢谢

标签: encryptionquartz.net

解决方案


我解决了。我删除了连接字符串quartz 属性并添加了connectionProvider.type 属性,这让我可以覆盖标准的Quartz.Impl.AdoJobStore.Common.DbProvider。

所以我能够解密我的连接字符串。

所以我的配置看起来像这样:

<quartz >
    <!-- thread pool info -->
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
    <!-- job store info -->
    <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
    <add key="quartz.jobStore.useProperties" value="true" />
    <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
    <add key="quartz.jobStore.tablePrefix" value="QUARTZ_" />
    <add key="quartz.jobStore.dataSource" value="defaultDS" />
    <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />
    <add key="quartz.dataSource.defaultDS.connectionProvider.type" value="MyDll.MyDbProvider, MyDll" />
</quartz>
<connectionStrings>
    <add key="myConnString" connectionString="crypted"/>
</connectionStrings>

然后我在创建此类的地方创建新的类库项目:

public class MyDbProvider : DbProvider
{
    public MyDbProvider() : base("SqlServer-20", MyHelper.GetConnectionString()) { }
}

public static class MyHelper
{
    public static string GetConnectionString()
    {
        //here i decrypt my connection string from app.config file
    }
}

MyDll.dll 必须在 Quartz.Server.exe 的同一目录中。

希望这可以帮助某人!


推荐阅读