Не удается получить привязку net.pipe, работающую в IIS7.5 в Windows Server 2008 R2
Я пытаюсь настроить привязки net.pipe на сервере между 2 процессами (на одной коробке). У меня все это работает локально в Windows 7, но на рабочем сервере (Windows Server 2008 R2) он не работает.
Я могу проверить, что у меня есть:
- Добавлена привязка net.pipe к IIS "Веб-сайт" (добавлено * в качестве информации).
- Добавлен net.pipe в список привязок в "дополнительных настройках" для IIS "Веб-сайт".
Это все, что требовалось на моей машине разработчика. Есть ли что-нибудь еще, что мне нужно сделать?
Ошибка, которую я получаю от простого тестового клиента консольного приложения:
Необработанное исключение: System.ServiceModel.EndpointNotFound Exception: не было прослушивания конечной точки на 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", если это имеет значение.
Я включил активацию без HTTP под Windows Features для.NET 3.5.1, хотя это работает под.NET 4.
2 ответа
- Вы включили службы Windows
Net.Pipe Listener Adapter
а такжеWindows Process Activation Service
? - Вы включили
net.pipe
привязка на уровне сайта? - Вы добавили
net.pipe
протокол на уровне вдир?
Я получал ту же ошибку EndPointNotFound на net.pipe://localhost/ для службы безопасного токена SharePoint.
Это работало на моей системе разработки, но не на производстве.
Для меня это было потому, что на моих производственных серверах работала служба агента Dell Change Auditor.