WCFサーバークライアントアプリケーションを作成しています。ただし、私の最初のテストでは、単純な呼び出し(基本的にはメソッドreturn true;
)に多くの時間がかかります(約5秒)
私はそれをトレースしようとしました、そしてこれはコールトレースのスクリーンショットです
2行目と3行目の間でわかるように、5秒経過しています(正直なところ、2行目と3行目が何を意味するのかわかりません)。
クライアント(呼び出し元)の構成では、バインディングは次のようになります(主にVisual Studioによって生成されます)
<wsHttpBinding>
<binding name="WSHttpBinding_IAgent" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="None">
</security>
</binding>
</wsHttpBinding>
そしてサーバーで
<wsHttpBinding>
<binding name="WSHttpBinding_IAgent" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:05:00" sendTimeout="00:05:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="16777216" maxReceivedMessageSize="16777216"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="16777216"
maxArrayLength="16384" maxBytesPerRead="16384" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="None"/>
</binding>
そして、私がそれをこのように呼ぶ方法
var client = new AgentClient(binding, BuildEndpointAddress(hostName, port));
for(int i =0; i<10; i++)
client.IsAlive(); //this call is very slow despite just returning true;
// subsequent calls are also slow so probably not because of wake-up time
このテストでは、サーバーとクライアントの両方が同じコンピューターにあるため、ネットワークの問題になることはありません。速度低下の原因や、これをトラブルシューティングするための詳細情報を見つける方法について何か考えはありますか?