WSDualHttpBindingを使用してWCFコールバックを実装しようとしました。このサービスはIIS7でホストされています。
ホストと同じマシン上にサービスのサンプルクライアントを作成した場合、正常に動作します。しかし、ネットワーク上の別のシステムから同じクライアントを実行すると、タイムアウト例外が発生します
サーバースタックトレース:System.ServiceModel.Channels.ReliableRequestor.ThrowTimeoutException()at System.ServiceModel.Channels.ReliableRequestor.Request(TimeSpan timeout)at System.ServiceModel.Channels.ClientReliableSession.Open(TimeSpan timeout)at System.ServiceModel.Channels .ClientReliableDuplexSessionChannel.OnOpen(TimeSpan timeout)at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel、TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout、CallOnceManagercascade)atシステム.ServiceModel.Channels。ServiceChannel.EnsureOpened(TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannel.Call(String action、Boolean oneway、ProxyOperationRuntime operation、Object [] ins、Object [] outs、TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannel.Call (String action、Boolean oneway、ProxyOperationRuntime operation、Object [] ins、Object [] outs)at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall、ProxyOperationRuntime operation)at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message )。ProxyOperationRuntime操作、Object [] ins、Object [] outs)at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall、ProxyOperationRuntime操作)at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessageメッセージ)ProxyOperationRuntime操作、Object [] ins、Object [] outs)at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall、ProxyOperationRuntime操作)at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessageメッセージ)
CallbackContractは次のようになります。
public interface IMyServiceCallBack
{
[OperationContract(IsOneWay = true)]
void Notify();
}
私も指定しました
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession,ConcurrencyMode = ConcurrencyMode.Reentrant)]
クライアントのapp.configは次のとおりです。
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_Callback" closeTimeout="00:01:00" clientBaseAddress="http://10.1.3.199:8002/myServiceHost/myService.svc/Endpoint"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="97108864" maxReceivedMessageSize="97108864"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="97108864" maxArrayLength="97108864"
maxBytesPerRead="97108864" maxNameTableCharCount="97108864" />
<security mode="None"/>
</binding>
</wsDualHttpBinding>
<client>
<endpoint address="http://10.1.3.199/myServiceHost/myService.svc/Endpoint"
binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_Callback"
contract="myService.ServiceContract" name="WSDualHttpBinding_Callback" />
</client>
私は何が欠けていますか!!!