我们在WPF应用程序中托管了WCF服务。 WCF服务使用app.config文件作为配置源。 WCF服务仅适用于同一台计算机上的客户端,因此它使用NetNamedPipeBinding
这是配置的相关部分:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="EndpointBehavior">
<dataContractSerializer />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="false" />
<dataContractSerializer />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<netNamedPipeBinding>
<binding name="NamedPipeBinding" closeTimeout="00:00:05" receiveTimeout="10:00:00"
maxBufferSize="524288" maxReceivedMessageSize="524288">
<security mode="None" />
</binding>
</netNamedPipeBinding>
</bindings>
<services>
<service behaviorConfiguration="ServiceBehavior" name="MyService">
<endpoint address="Facade" behaviorConfiguration="EndpointBehavior" binding="netNamedPipeBinding" bindingConfiguration="NamedPipeBinding"
name="NamedPipeEndpoint" contract="IMyService" />
<host>
<baseAddresses>
<add baseAddress="net.pipe://localhost/company/" />
</baseAddresses>
</host>
</service>
</services>
<client>
<endpoint address="net.pipe://localhost/company/OtherService/API/" binding="netNamedPipeBinding" bindingConfiguration="NamedPipeBinding" contract="IOtherService" name="NamedPipeEndpoint" />
</client>
这一切都很棒。客户端可以与此服务器通信,并返回。 问题是,当部署到客户端计算机时,它会在首次运行时请求防火墙例外:(类似于此)
由于我使用的是命名管道,因此不应该要求防火墙例外。
所以问题实际上是:如何找出导致防火墙例外的代码部分?这是一个很大的代码库,我尝试搜索与TCP相关的所有术语, HTTP,...我也试过运行 Fiddler 试图找到更多信息,但我没有看到任何相关内容。