我需要为WCF加载自定义app.config。
我试过他的解决方案名为“Relocating app.config to a custom path”,但不幸的是,这种技术对WCF不起作用,它仍然会抛出错误,说它无法找到.config文件(如果我找不到,请更正我错了。)
答案 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的新实例。