2012-03-22 24 views
1

WCFサービスに問題があります。 WebHTTPバインディングを実行しており、画像を受け取るサービスです。Windows Server 2003/IIS6でWCFサービスが失敗する - 基本接続が閉じられた

一部のイメージでは、サーバーが受信ストリームの受信に失敗するという問題があります。問題はサイズに関するものではありません。 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

私は、私のWCFサービスのためにバッファするTransfermodeを変更しました私がそれをした後、サービスコードは起動されません。だから私はWCFの設定を疑うことはありません。

私はWCFのmeesageLoggingを有効にしました。これは、もう一度私にほとんど何も与えません。ログファイルで

<system.serviceModel> 
    <diagnostics> 
    <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="-1"/> 
    </diagnostics> 

ログはその後私に次のようになります

基本情報:

アクティビティ名:2012-03-22 09:メッセージ1.

処理時間: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、ネイティブ重複* 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()が失敗しました:サーバーは、この要求に対する応答を返しませんでした。

私に知らせて、私はそれを提出するより多くの情報の必要性がある場合。

敬具 /アンダース

答えて

1

だから私もこの問題を抱えていました。最初は、それがスレッドの問題かもしれないと思っていました(私のより良い判断に反していましたが)。私はサービスコールをスレッドセーフにして、その後、ワーカープロセスがクラッシュした後に実際の例外に落ちました。私の問題は、私が偽装を使って特定の資格証明書を使ってシェアを書いていて、それを読んでいることが判明しました。しかし、そのシェアはもう接続できなくなりました。私がログアウトしていても(ハンドルを閉じる)明らかに接続はまだぶら下がっていました。私がやり遂げたのは、MemoryCacheを使ってトークンを少し長くして、共有とユーザーがデータベースのどのメディアでも同じであったときにそれらを再利用することでした。

あなたの問題が同じ問題であるかどうかはわかりませんが、私たちは同じ症状のあるdefです。私のWCFサービスは共有に読み書きしています。 SafeThreadクラス(ここで元のソースコードを変更しました:http://www.codeproject.com/KB/threads/SafeThread.aspx)を使用すると、ワーカープロセスがクラッシュするのを防ぎ、実際のエラーが記録されるのを確認することができました。

ナレッジベースの記事。 http://support.microsoft.com/kb/179483

これは誰かを助けることを望みます。

+0

注:WCFサービスがServer 2008/IIS7ボックスでホストされている場合、この現象も見られました。 – adillon

+0

こんにちは、私はこれが私たちのバグを引き起こしているとは思わない。ファイルをネットワーク共有に書き込む前にエラーが発生します。サーバーにイメージをストリーミングすると、一部のファイルでエラーが発生し、一部のファイルのみがアップロードされます。前述のように、バッファリングされたトランスポートモードが有効な場合、WCFサービスは呼び出されません。私たちはいくつかのネットワーク要素を疑っていますが、顧客からまだ回答がありません。しかし、彼らはこの問題を解決したと主張しています。 – ankhansen

関連する問題