我遇到了WCF服務的問題。它運行WebHTTP綁定,並且是一種接收圖像的服務。WCF服務在Windows Server 2003/IIS6上失敗 - 底層連接已關閉
的問題是,對某些圖像服務器未能接收傳入的數據流。問題不在於規模。它可以接收100Kb和4MB的文件,但在800kb的文件中失敗。 「缺陷」圖像永遠不會成功,「好」圖像將永遠成功。
我現在懷疑是在IIS 6,我們有它在測試和生產在房子上運行IIS 7和IIS 7.5,但在這個客戶現場與IIS 6失敗。
我無法弄清楚如何獲得更多的調試信息進行IIS 6的走近它爲什麼被切斷連接。
下面是討厭的細節,因爲我認爲相關。
我希望會有人一直在這裏,並且能夠向前協助我。
機器
的Windows 2003 R2 SP2 + IIS 6,+ NET 2.0 + 3.5
WCF
我已經改變的transferMode以緩衝對我的WCF服務,在我這樣做後,服務代碼甚至不會被調用。所以我不懷疑WCF設置。
我已經啓用meesageLogging爲WCF,這再次給我幾乎沒有。
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="-1"/>
</diagnostics>
在日誌文件記錄之後給了我下面的:
基本信息:
活動名稱:處理消息1.
時間:2012-03-22 09 :27:56.1996
級別:錯誤
來源:System.ServiceModel
過程:W3WP
螺紋:12
異常消息:
可用的字節數是與HTTP Content-Length頭不一致。可能有網絡錯誤或客戶端可能發送無效請求。
異常Stakctrace:
System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(流 的inputStream) 系統。ServiceModel.Channels.HttpInput.ParseIncomingMessage(例外& requestException) System.ServiceModel.Channels.HttpRequestContext.CreateMessage() System.ServiceModel.Channels.HttpChannelListener.HttpContextReceived(HttpRequestContext 上下文,ItemDequeuedCallback回調) System.ServiceModel.Activation。 HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult 結果) System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest() System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest() System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(對象 狀態) System.ServiceModel.PartialTrustHelpers.PartialTrustInvoke(ContextCallback 回調,對象狀態) System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequestWithFlow(對象 狀態) System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke2() 系統。 ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke() System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.ProcessCallbacks() System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.CompletionCallback(對象 狀態) System.ServiceModel.Channels .IOThreadScheduler.CriticalHelper.ScheduledOverlapped.IOCallback(UInt32 errorCode,UInt32 numBytes,Native重疊* nativeOverlapped) System.ServiceModel.Diagnostics.Utility.IOCompletionThunk.UnhandledExceptionFrame(UInt32的 誤差,UInt32的bytesRead,NativeOverlapped * nativeOverlapped) System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32的 的errorCode,UInt32的的numBytes,NativeOverlapped * pOVERLAP)
同樣,證據表明它不是我們的WCF服務負責該錯誤,而是WCF管道中的某處。
HTTPERR
我已經檢查了IIS的日誌HTTPERR,並沒有什麼存在,但Timer_ConnectionIdle項,這應該是無關的。
提琴手
提琴手只是陳述了顯而易見的:
[提琴手] ReadResponse()失敗:服務器未返回該請求的響應。
如果有任何需要更多的信息讓我知道,我會提交它。
問候 /安德斯
注意:當WCF服務託管在Server 2008/IIS7框上時,我們也看到了這種行爲。 – adillon 2012-04-09 17:27:33
嗨,我不相信這是什麼導致我們的錯誤。在嘗試將文件寫入網絡共享之前,我們會遇到錯誤。當我們將圖像傳輸到服務器時,它會在某些文件上失敗,並且只會上傳一部分文件。如上所述,啓用緩衝傳輸模式時,WCF服務甚至不會被調用。我們懷疑一些網絡元素,但尚未得到客戶的迴應。但他們聲稱已經解決了這個問題,我們現在還不知道。 – ankhansen 2012-04-10 07:44:54