在我的應用程序中,同步中的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 ??? –
@Jonathan我們有一個Winform客戶端,它調用服務器上的一個方法; WCF服務託管在此服務器上的Windows服務中。 – Gerard