WCF:将编程配置转换为app.config
本文关键字:app config 转换 配置 编程 WCF | 更新日期: 2023-09-27 17:57:48
我有以下可工作的编程配置(服务器端)
using (ServiceHost host = new ServiceHost(
typeof(RequestHandler),
new Uri[] { new Uri("net.pipe://localhost") }))
{
NetNamedPipeBinding tBinding = new NetNamedPipeBinding();
host.AddServiceEndpoint(typeof(RequestInterface),
tBinding, "Request");
host.Open();
Application.Run(new Form1());
}
尝试将其转换为app.config
:的代码
<system.serviceModel>
<bindings>
<netNamedPipeBinding>
<binding
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
transactionFlow="false"
transferMode="Buffered"
transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288"
maxBufferSize="65536"
maxConnections="10"
maxReceivedMessageSize="65536">
<security mode="Transport">
<transport protectionLevel="EncryptAndSign" />
</security>
</binding>
</netNamedPipeBinding>
</bindings>
<services>
<service name="ServerApp.RequestHandler">
<host>
<add baseAddress="net.pipe://localhost/" />
</host>
<endpoint address="net.pipe://localhost/Request/"
binding="netNamedPipeBinding"
contract="AppLib.RequestInterface" />
</service>
</services>
然而,这似乎不起作用——即客户端无法连接到它。
我的app.config代码中有错误吗?或者,我必须以编程方式告诉.NET使用app.config中的配置吗?
否,除了根据服务类型在配置中正确分配类型/名称之外。。。看起来你已经做对了,你不应该做任何其他的事情来指向配置。
我没有解析配置,但老实说,您可能应该使用配置编辑器工具来设置您的服务。这可能是导致您的服务无法工作的最小错误、错误类型或遗漏设置。我经常说XML可能是人类可读的,但它很少是人类可编辑的。。。IMO WCF配置属于该阵营:-)
我认为添加metadateexchange的mex端点可能会解决此问题,但不确定,请尝试一次。或者你最好在跟踪服务,在那里你可以找到确切的问题。