1

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

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

注意- 我确保 Net Pipe Listener Service 已打开,并且“未激活”的东西已打开,这将在下面的文章中介绍。此外,我将 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

4

1 回答 1

0

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

于 2013-11-07T06:25:27.440 回答