ホストに次のapp.configがあります。
<services>
<service name="DCC_Service.DCCService" behaviorConfiguration="serviceBehavior">
<endpoint binding="netNamedPipeBinding" contract="DCC_Service.IDCCService" address="DCCService" />
<endpoint binding="mexNamedPipeBinding" contract="IMetadataExchange" address="mex" />
<Host>
<baseAddresses>
<add baseAddress="net.pipe://localhost/"/>
</baseAddresses>
</Host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
NetNamedPipeBindingのタイムアウトを無限の別名Timespan.MaxValue
に設定するにはどうすればよいですか?
さまざまなタイムアウト値(閉じる、開く、受信、送信)にはinfinite
を使用します。これらのタイムアウトは、そのようなバインディング構成で指定します。
<bindings>
<netNamedPipeBinding>
<binding name="mybinding" closeTimeout="infinite" openTimeout="infinite"
receiveTimeout="infinite" sendTimeout="infinite" />
</netNamedPipeBinding>
</bindings>
bindings
セクションは、services
およびbehaviors
セクションと同じレベルになります。残っているのは、サービスエンドポイントのバインディング構成を参照することだけです。
<services>
<service name="DCC_Service.DCCService" behaviorConfiguration="serviceBehavior">
<endpoint binding="netNamedPipeBinding"
contract="DCC_Service.IDCCService"
address="DCCService"
bindingConfiguration="mybinding"/> <!-- SEE THIS LINE -->
<endpoint binding="mexNamedPipeBinding"
contract="IMetadataExchange"
address="mex" />
<Host>
<baseAddresses>
<add baseAddress="net.pipe://localhost/"/>
</baseAddresses>
</Host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
具体的には覚えていませんが(今は調べる時間がありません)、クライアント構成にもこのようなものを含める必要があるかもしれません。
10675199.02:48:05.4775807である最大タイムスパンとして設定します
sendTimeout="10675199.02:48:05.4775807"
以下のように最大タイムアウトを与えることもできます
{{
binding.CloseTimeout = TimeSpan.MaxValue;
binding.OpenTimeout = TimeSpan.MaxValue;
binding.ReceiveTimeout = TimeSpan.MaxValue;
binding.SendTimeout = TimeSpan.MaxValue;
}