Streamed TransferMode で NetTcpBinding を使用しています。コールバックをデュプレックスとして実行しようとしましたが、エラー メッセージが表示されました。Streamed TransferMode で NetTcpBinding を使用し、(二重) コールバック サービス コントラクトを使用することは可能ですか? 背景: - 高速であり、nat の問題がないため、NetTcpBinding を使用します。 - 大きなファイルも転送するため、ストリーミング モードを使用します。
設定:
<netTcpBinding>
<binding name="DuplexBinding" transferMode="Streamed"
closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="104857600" maxReceivedMessageSize="104857600"
>
<readerQuotas maxDepth="104857600" maxStringContentLength="104857600" maxArrayLength="104857600" maxBytesPerRead="104857600" maxNameTableCharCount="104857600"/>
<reliableSession enabled="true" ordered="true" inactivityTimeout="00:10:00"/>
<security mode="None" />
</binding>
</netTcpBinding>
その契約:
IMyDataService.cs
[ServiceContract(CallbackContract = typeof(INotifyCallback))]
public interface IMyDataService
{
[OperationContract(ProtectionLevel = System.Net.Security.ProtectionLevel.None)]
[FaultContract(typeof(MyFaultException))]
[FaultContract(typeof(MyUserAlreadyLoggedInFaultException))]
[FaultContract(typeof(AuthorizationFaultException))]
Guid Authenticate(Guid clientID, string userName, string password, bool forceLogin);
}
INotifyCallback.cs
public interface INotifyCallback
{
[OperationContract(IsOneWay = true)]
void ShowMessageBox(string message);
}
transferMode="Streamed" を設定するとエラーが発生します
コントラクトには Duplex が必要ですが、Binding 'NetTcpBinding' は Duplex をサポートしていないか、サポートするように正しく構成されていません。
誰もが提案できます ありがとう