0

我有由 MS SQL Server 调用的 ac# CLR 项目。CLR 项目尝试连接并读取 WCF 服务。通常,Web 服务绑定和端点在相应的 app.config 文件中进行配置。在我的项目中也是如此。但是,例如,当我尝试从 app.config 文件中读取 AppSettings 时,我得到一个“对象引用未设置为此对象的实例”。AppSettings 调用的返回值为 null。CLR 找不到配置文件。我想调用配置文件,因为它包含我要连接的端点 URL。

这就是我正在做
的事情: 1. 构建 CLR DLL 并将其与配置文件一起放在一个目录中
2. 在 MS SQL Server (2008 R2) 中加载程序集
3. 创建函数并启动对 CLR 的调用

我究竟做错了什么?在这种特定情况下,有没有办法从 app.config 文件中读取?

希望问题很清楚。提前致谢。

4

2 回答 2

1

您如何从文件中读取设置app.config

请记住使用命名空间中可用的ConfigurationManagerSystem.Configuration来检索AppSettings配置文件部分中的设置值。你可以这样做:

var value = ConfigurationManager.AppSettings["mySetting"];

如果你有这样的app.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
     <add key="mySetting" value="setting"/>
  </appSettings>
</configuration>
于 2013-11-08T10:35:48.940 回答
0

也许最简单的解决方案是在 CLR DLL 库中以编程方式配置 WCF 客户端?

var binding = new System.ServiceModel.BasicHttpBinding();
binding.SendTimeout = TimeSpan.FromMinutes( 1 );
binding.OpenTimeout = TimeSpan.FromMinutes( 1 );
binding.CloseTimeout = TimeSpan.FromMinutes( 1 );
binding.ReceiveTimeout = TimeSpan.FromMinutes( 10 );
using (var client = new SomeServiceSoapClient(binding, new System.ServiceModel.EndpointAddress("http://site.example/SomeService.asmx")))
{
    // client.DoWork(...)
}

并将配置数据 (URL) 作为参数传递给 SQL CLR 函数?通过这种方式,您可以独立于 app.config 位置问题。

于 2013-11-08T09:19:40.833 回答