5

我正在尝试在 2 个进程(在同一个盒子上)之间的服务器上配置 net.pipe 绑定。我在 Windows 7 中本地运行所有这些,但在生产服务器(Windows Server 2008 R2)上,它无法运行。

我可以验证我有:

  • 向 IIS“网站”添加了 net.pipe 绑定(添加 * 作为信息)。
  • 将 net.pipe 添加到 IIS“网站”的“高级设置”中的绑定列表中。

这就是我的开发机器所需的全部内容。还有什么我需要做的吗?

我得到的错误来自一个简单的控制台应用程序测试客户端:

未处理的异常:System.ServiceModel.EndpointNotFoundException:net.pipe://nameOfService.svc 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。---> System.IO.PipeException:在您的本地计算机上找不到管道端点“net.pipe://nameOfService.svc”。`

这是一些配置:

客户:

<system.serviceModel>
    <bindings>
        <netNamedPipeBinding>
            <binding name="NetNamedPipeBinding_IWebAppNotifyService">
                <security mode="None" />
            </binding>
        </netNamedPipeBinding>
    </bindings>
    <client>
        <endpoint address="net.pipe://nameOfService.svc"
            binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IWebAppNotifyService"
            contract="ServiceReference2.IWebAppNotifyService" name="NetNamedPipeBinding_IWebAppNotifyService" />
    </client>
</system.serviceModel>

服务器:

<bindings>
  <netNamedPipeBinding>
    <binding name="WebAppNotifyServiceBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      <security mode="None">
      </security>
    </binding>
    <binding name="ScannerManagerCommandBinding">
      <security mode="None" />
    </binding>
  </netNamedPipeBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="WebAppNotifyServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="True" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="MonitoringApp.Notifier.WebAppNotifyService" behaviorConfiguration="WebAppNotifyServiceBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="net.pipe://nameOfService.svc" />
        <add baseAddress="http://nameOfService" />
      </baseAddresses>
    </host>
    <endpoint address="" binding="netNamedPipeBinding" bindingConfiguration="WebAppNotifyServiceBinding" contract="X.Y.IWebAppNotifyService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>

更新:

与承载 net.pipe 绑定的网站关联的应用程序池在“NetworkService”用户下运行,如果这有所不同的话。

我已经在 .NET 3.5.1 的 Windows 功能下启用了非 HTTP 激活,尽管它是在 .NET 4 下运行的。

4

2 回答 2

8
  • 您是否启用了 Windows 服务Net.Pipe Listener AdapterWindows Process Activation Service
  • 您是否net.pipe在站点级别启用了绑定?
  • 您是否net.pipe在 vdir 级别添加了协议?
于 2012-06-27T14:27:11.977 回答
0

对于 SharePoint 安全令牌服务,我在 net.pipe://localhost/ 上遇到了相同的 EndPointNotFound 错误。

它适用于我的开发系统,但不适用于生产。

对我来说,这是因为 Dell Change Auditor Agent 服务正在我的生产服务器上运行。

https://blogs.msdn.microsoft.com/spses/2016/01/21/sharepoint-2013-unable-to-viewedit-office-documents-in-browser-using-office-web-apps-2013/

于 2017-03-24T04:54:04.017 回答