Microsoft Exchange 传输代理

Microsoft Exchange Transport Agent

我正在为 Microsoft Exchange 服务器构建传输代理。到目前为止我已经实施的逻辑有效。现在,我想将一些变量存储在数据库中。我选择了存储库模式,当我尝试从 App.Config 文件中提取连接字符串时,我收到 NullReference 异常:

public class ConfigRepository : IConfigRepository, IDisposable
{
    private string configString = System.Configuration.ConfigurationManager.ConnectionStrings["citadelEAPEntities"].ConnectionString;
    // private string configString = "..."; here I tried to write the string directly .
    private string configValProc = "[dbo].[GetConfigValue]";
    private SqlConnection connection;

    public ConfigRepository()
    {
        connection = new SqlConnection(configString);
    }

    // other logic and implementation of interfaces
}

相同的 class 在测试控制台应用程序中实现,工作正常(相同的连接字符串以相同的方式存储在 app.config 文件中)。 我不明白这个例外的原因。传输代理 class 在 'using' 语句中实例化一个 ConfigRepository class ,当它通过配置管理器初始化连接字符串变量到达构造函数时,抛出异常。显然,当我以硬编码方式使用连接字符串时,一切正常。

在引用其他程序集(例如 System.Configuration)时,传输代理程序集是否受到某种限制?只是奇怪。

Transport Agents 运行 在 NetworkService 的安全上下文中,因此它很可能没有足够的权限从您引用程序集的位置加载程序集。如果您使用进程监视器 https://docs.microsoft.com/en-us/sysinternals/downloads/procmon 之类的东西,您应该能够跟踪进程等