我有一个由MS SQL Server调用的c#CLR项目。 CLR项目尝试连接到WCF服务并从中读取。 通常,webservice绑定和端点在相应的app.config文件中配置。在我的项目中也是如此。 但是,例如,当我尝试从app.config文件中读取AppSettings时,我得到一个“对象引用未设置为此对象的实例”。 AppSettings调用的返回值为null。 CLR找不到配置文件。我想调用配置文件,因为它包含我想要连接的端点URL。
这就是我正在做的事:
1.构建CLR DLL并将其与配置文件一起放在目录中
2.在MS SQL Server(2008 R2)中加载程序集
3.创建功能并启动对CLR的调用
我做错了什么?在这种特定情况下,有没有办法从app.config文件中读取?
希望问题很清楚。 提前谢谢。
答案 0 :(得分:1)
您是如何从app.config
文件中读取设置的?
请记住使用System.Configuration
命名空间中提供的ConfigurationManager类来检索配置文件的AppSettings
部分中的设置值。你可以这样做:
var value = ConfigurationManager.AppSettings["mySetting"];
如果你有app.config
这样的文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="mySetting" value="setting"/>
</appSettings>
</configuration>
答案 1 :(得分: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位置问题。