我有一個使用HTTPS在IIS中託管的WCF Web服務。服務和客戶端應用程序都是用C#編寫的。客戶端應用程序所做的第一個Web服務調用需要15秒鐘才能完成。一旦完成最初的呼叫,後續呼叫在大約100毫秒內完成。爲了測試,我有一個簡單的方法:string Ping(int val);它只是回傳以字符串形式傳入的數字。.NET中的初始Web服務調用需要很長時間
奇怪的是,一個千里之外的用戶報告了這個問題,但我沒有在我的開發機器上遇到它。我只看到第一個請求需要2到3秒。現在幾乎每個客戶都報告第一個請求需要超過15秒。
這是C#客戶端的正常行爲嗎?有沒有人遇到過這個問題?
我的Web服務綁定配置如下:
<basicHttpBinding>
<binding
name="BasicHttpBinding_IMyWebSvc"
maxBufferSize="16777216"
maxReceivedMessageSize="16777216"
messageEncoding="Mtom">
<readerQuotas
maxDepth="1024"
maxStringContentLength="262144"
maxArrayLength="16777216"
maxBytesPerRead="16777216"
maxNameTableCharCount="16777216"
/>
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
編輯:這個問題會很奇怪。
我寫了一個測試客戶端,使用了除了Ping()測試方法之外什麼都沒有的修剪代理代碼。經過測試,它仍然花費了15秒以上。由於Ping()函數不需要大量緩衝區並且問題消失,因此開始更改客戶端緩衝區大小。將緩衝區大小恢復到其原始值,問題不再回來。冉真實的客戶和第一個電話在1.2秒內完成。現在我無法在我的開發PC上重現問題。
你用Wireshark來看看那裏的延遲是從術語來的網絡? – 2011-12-17 18:05:01
我會試一試。 – 2011-12-17 18:12:17
如果您能夠從託管您的服務的網絡外部進行連接,那可能會更好。我與Jon合作,我認爲你遇到某種與網絡有關的超時問題。 – 2011-12-17 18:25:13