我正在为Microsoft Exchange服务器构建传输代理。到目前为止我实施的逻辑是有效的。现在,我想在DB中存储一些变量。我选择了一个存储库模式,当我尝试从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
}
同一个类在测试控制台应用程序中实现,它可以正常工作(在app.config文件中以相同的方式存储相同的连接字符串)。 我无法理解这个例外的原因。传输代理类在'中使用'实例化ConfigRepository类。语句以及在通过配置管理器初始化连接字符串变量时到达构造函数的那一刻,将抛出异常。显然,当我以硬编码方式使用连接字符串时,一切正常。
传输器代理程序集在引用其他程序集(例如System.Configuration)时是否有某种限制?太奇怪了。
答案 0 :(得分:1)
传输代理在NetworkService的安全上下文中运行,因此很可能它没有足够的权限从您引用它的位置加载程序集。如果您使用过程监控器https://docs.microsoft.com/en-us/sysinternals/downloads/procmon之类的东西,您应该能够跟踪过程等。