无法在IIS中获取WCF NetNamedPipeBinding服务工作/暴露/消耗

时间:2013-11-06 20:06:04

标签: c# .net wcf iis netnamedpipebinding

我有一个WCF服务需要在WCF中使用NetNamedPipeBinding公开。由于某些限制,我无法自行托管作为Windows服务。它必须通过IIS。

我觉得我已经耗尽了所有可用的资源来尝试启动和运行我的服务,但我无法使用它,甚至无法判断它是否被IIS接收。

注意 - 我确保Net Pipe Listener服务已启用,并且“非激活”内容已打开,这些内容将在下面的文章中介绍。此外,我将IIS站点中的“启用的协议”更改为“http,net.pipe”。

我正在尝试使用以下代码来使用该服务:

string baseAddress = "net.pipe://localhost/Services/";
ChannelFactory<IMyService> factory = new ChannelFactory<IMyService>(  
                                   new NetNamedPipeBinding(NetNamedPipeSecurityMode.None),
                                   baseAddress);

IMyService service = factory.CreateChannel();
var restResult = service.MyMethod();

我的web.config具有以下服务定义。

<system.serviceModel>
  <services>
    <service name="Path.To.My.Service.MyService"
           behaviorConfiguration="NamedPipeServiceBehavior">
      <host>
        <baseAddresses>
          <add baseAddress="net.pipe://localhost/Services/"/>
        </baseAddresses>
      </host>
      <endpoint address=""
                binding="netNamedPipeBinding"
                contract="Path.To.My.Service.IMyService"/>
      <endpoint address="mex"
                binding="mexNamedPipeBinding"
                contract="IMetadataExchange"/>
    </service>
  </services>
  <bindings>
    <netNamedPipeBinding>
      <binding name="Binding1">
        <security mode="None"/>
      </binding>
    </netNamedPipeBinding>
  </bindings>
  <behaviors>
    <serviceBehaviors>
      <behavior name="NamedPipeServiceBehavior">
        <serviceMetadata />
        <serviceDebug includeExceptionDetailInFaults="false"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="True" aspNetCompatibilityEnabled="True"/>
 </system.serviceModel>

我希望我有一个非常直截了当的问题,但我真的不确定问题出在哪里。

我不确定IIS是否正在选择此服务,我相当肯定元数据未正确公开。

我引用了以下文章/示例:

http://dotnetmentors.com/wcf-by-example-on-netnamedpipebinding.aspx http://dotnetmentors.com/hosting-wcf-service-with-nettcpbinding-or-netnamedpipebinding-in-iis.aspx http://mohammedatef.wordpress.com/tag/netnamedpipebinding/ http://msdn.microsoft.com/en-us/library/ms752247.aspx http://tech.pro/tutorial/855/wcf-tutorial-basic-interprocess-communication

1 个答案:

答案 0 :(得分:0)

您需要为IIS站点设置绑定。