我知道以下事实:如果.dll
中的代码想要读取其配置文件,则必须手动执行。但是,如果(在同一.dll
中)引用了服务该怎么办呢,那会占用一些代码并将某些配置添加到.config
文件中,所以我唯一能够使用该服务的方法正在将该配置复制到主应用程序的.config
文件中。
我想知道是否有人对此有另一种选择。我认为它应该使用脚手架提供的任何构造函数,但无法使其正常工作。
这些是构造函数:
MyServiceClient(string endpointConfigurationName)
MyServiceClient(string endpointConfigurationName, string remoteAddress)
MyServiceClient(string endpointConfigurationName, EndpointAddress remoteAddress)
MyServiceClient(Binding binding, EndpointAddress remoteAddress)
和配置:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicEndPoint" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="<service-url>"
binding="basicHttpBinding" bindingConfiguration="BasicEndPoint"
contract="<contract>" name="BasicEndPoint" />
</client>
</system.serviceModel>
谢谢!
答案 0 :(得分:1)
当我遇到同样的问题时,我使用了最后一个构造函数:
MyServiceClient(Binding binding, EndpointAddress remoteAddress)
。将服务uri作为参数传递给类构造函数,然后仅使用默认设置:
private MyServiceClient = _service;
public MyClass(string serviceUri)
{
if (string.IsNullOrEmpty(serviceUri))
{
_service = new MyServiceClient();
}
else
{
var binding = new System.ServiceModel.BasicHttpBinding() { MaxReceivedMessageSize = int.MaxValue };
var endpoint = new System.ServiceModel.EndpointAddress(serviceUri);
_service = new MyServiceClient (binding, endpoint);
}
}
但是,我不知道您可以按照Marc_s's answer中的说明来外部化配置文件(也通过dotnetstep在注释中链接)-如果我知道这一点,我可能会使用它来代替
请注意,在我的代码中,如果您传递null或空字符串,则serviceModel
有望在配置文件中找到。