私のアプリケーションではWinform UIスレッドが同期してWCFメソッドを呼び出します。 これは99.99%の時間ですが、WCFメソッドの呼び出しがロックされ、UIがフリーズします。WCFサービスはどのようにロックされますか?
私は、非同期呼び出しを行うことでUIのフリーズを防ぐことができます - 私たちのWCF呼び出しのほとんどは非同期ですが、この特定の小さなメソッドを同期させることはそれほど悪くないと考えました。
WCFサービスのロックが発生すると、ほかのユーザーもサービスにアクセスできなくなります。この問題を解決するには、WCFサービスホスト(Windowsサービス)を再起動する必要があります。
WCFサービスがどのようにロックされ、アクセス不能になる可能性がありますか?
シナリオは考えられません。
通常どおり実行されていたデータベースを確認しました。
技術的な内容: サービス代理店でプロキシを使用しています。プロキシを持つこのサービスエージェントは、アプリケーションの実行中も有効です。
[PreserveReferences]
[OperationContract(IsOneWay = false, AsyncPattern = false, Action = "MyMethod")]
MyType MyMethod();
使用中のバインディング:
<wsHttpBinding>
<binding name="AppWsHttpBindingConfig" transactionFlow="true" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Mtom">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="false" enabled="false" />
<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true" establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
これを明確にするために、あなた自身があなたのWCFサービスをホストしていますか? –
あなたはどのようなバインディングを持っていますか? wsHttp、nettcp ??? –
@ジョナサン私たちは、サーバー上のメソッドを呼び出すWinformクライアントを持っています。 WCFサービスはこのサーバー上のWindowsサービスでホストされます。 – Gerard