将app.config重定位到WCF的自定义路径?

时间:2010-11-10 00:43:05

标签: wcf

我需要为WCF加载自定义app.config。

我试过他的解决方案名为“Relocating app.config to a custom path”,但不幸的是,这种技术对WCF不起作用,它仍然会抛出错误,说它无法找到.config文件(如果我找不到,请更正我错了。)

3 个答案:

答案 0 :(得分:1)

感谢WCF Client without app.config/web.config by Kishore Gorjala,我消除了对app.config的所有依赖,如下所示:

EndpointAddress endpointAddress = new EndpointAddress("http://myServiceURL.com");
WSHttpBinding serviceBinding = new WSHttpBinding();
serviceBinding.ReceiveTimeout = new TimeSpan(0, 0, 120);
MyServiceClient myClient = new MyServiceClient(serviceBinding, endpointAddress);

根据这篇博客,您可能也想尝试使用BasicHttpBinding而不是WSHttpBinding。

此技术也在博客Minimal WCF server/client WITHOUT app.config上提及。

实验证据:这非常有效 - 而且不用担心app.exe.config。

答案 1 :(得分:0)

从您引用的问题中可以看出,这不起作用。实际上,它在.NET中的任何地方都不起作用 - 问题不是特定于WCF。

每个AppDomain只有一个配置文件。期。您将始终必须将DLL的app.config中的设置复制到单个配置文件中。

答案 2 :(得分:0)

有一种从自定义位置加载app.config的方法,请参阅Loading the WCF configuration from different files on the client side by Pablo M. Cibraro (aka Cibrax)

此方法依赖于使用加载自定义app.config的构造函数覆盖CustomClientChannel,然后使用以下代码创建客户端:

CustomClientChannel<ICalculator> channel = new CustomClientChannel<ICalculator>("OtherConfig.config");
ICalculator client = channel.CreateChannel();

Download the Microsoft Visual Studio sample project here

要修复Visual Studio 2010下的编译错误,请将两个项目升级到.NET 4.0,然后重新加载它找不到的五个引用的程序集。要将它添加到项目中很简单:只需添加额外的类,并将原始通道实例化行替换为使用自定义app.config的新实例。