我正在为 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
}
在测试控制台应用程序中实现了相同的类,它工作正常(在 app.config 文件中以相同的方式存储相同的连接字符串)。我无法理解此异常的原因。传输代理类在“使用”语句中实例化一个 ConfigRepository 类,当它通过配置管理器初始化连接字符串变量时到达构造函数时,会抛出异常。显然,当我以硬编码方式使用连接字符串时,一切正常。
在引用其他程序集(例如 System.Configuration)时,传输代理程序集是否受到某种限制?只是奇怪。
传输代理在 NetworkService 的安全上下文下运行,因此它很可能没有足够的权限从您引用它的位置加载程序集。如果您使用进程监视器https://docs.microsoft.com/en-us/sysinternals/downloads/procmon 之类的东西,您应该能够跟踪进程等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句