WCF:将编程配置转换为app.config

时间:2011-05-26 14:37:24

标签: c# .net wcf netnamedpipebinding

我有以下工作程序配置(服务器端)

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中的配置?

2 个答案:

答案 0 :(得分:2)

不,除了根据服务类型在配置中正确分配类型/名称...它看起来你已经正确完成了,你不应该做任何其他事情来指向配置。 / p>

我没有解析配置,但老实说,您应该使用Configuration Editor Tool来设置您的服务。这可能是导致您的服务无法工作的最小的小错误,错误类型或错过的设置。我经常说XML可能是人类可读的,但它很少是人类可编辑的...... IMO WCF配置属于那个阵营: - )

答案 1 :(得分:0)

我认为添加metadatexchange的mex端点可以解决这个问题,不确定但是尝试一次。 或者它更好地了解您可以找到确切问题的服务跟踪。