我们使用 IIS 7 通过 net.tcp 和 net.pipe 绑定托管大约 20 个服务,并且工作正常。
对我来说,您的管道问题看起来像是配置错误。如果有帮助,这就是我们配置它们的方式:
服务器:
<endpoint address ="" binding="fooBinding"
contract="Bla.IBlaAPI"
bindingConfiguration="BlaAPI.BindingConfig">
绑定配置:
<binding name="BlaAPI.BindingConfig"
receiveTimeout = "10:50:00"
sendTimeout = "10:50:00"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
transactionFlow="false">
<readerQuotas maxDepth="32"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="8192"
maxNameTableCharCount="2147483647" />
<security mode="None"/>
</binding>
请注意,我们正在使用长超时并且对消息大小等具有非常高的配额,因为我们正在通过该服务传递一些大数据块。您可以根据自己的需要进行调整。我们将安全设置为“无”,因为仅从受保护的本地计算机联系服务。同样,您的里程可能会有所不同。
客户:
<endpoint name="Bla.Bindings.BlaAPI" address="net.pipe://localhost/bla/IBlaAPI.svc"
behaviorConfiguration="BlaAPI.ServiceBehavior"
binding="netNamedPipeBinding" bindingConfiguration="BlaAPI.BindingConfig"
contract="Bla.IBlaAPI" />
关于Faulted状态问题,请注意,如果在服务代码执行过程中出现未处理的异常,服务实例会一直处于Faulted状态,直到它被正常关闭。为避免这种情况,要么在服务顶层处理异常,要么使用例如企业库异常处理块。