2016-07-12 9 views
0

現在開発中のAzureホストのWebアプリケーションでは、複数パートのフォームデータとAJAXリクエストの両方でファイルをアップロードするときに奇妙な問題が発生します。断続的に、私は認識できる実際のパターンがなく、ファイルをアップロードするときにブラウザは接続がリセットされたことを報告しています。つまり、サーバーは接続を終了しました。フィドラーは私の最も詳細なエラーメッセージを提供しています(サイト全体がすべての要求に対してHTTPSにリダイレクトするように設定されている)HTTPS上で実行している場合にのみ起こっているHTTPS経由でAzure Web Appにファイルをアップロードするときに接続がリセットされる

HTTP/1.1 504 Fiddler - Send Failure

[Fiddler] SendRequest() failed: System.IO.IOException Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host. < An existing connection was forcibly closed by the remote host

。このリダイレクトを削除すると、HTTP経由で確実にアップロードできます。

フォームとAJAX要求は、非同期MVCコントローラによって処理されています。これらのコントローラは、ポストデータ内のオブジェクトHttpPostedFileBaseのストリームにアクセスします。これらのストリームは、Azure Blobストレージにアップロードされます。ペイロードが完全にアップロードされる前に接続が閉じられている場合、これらのコントローラが要求を処理しているかどうかわかりませんが?

アイデア?本当にこの上に私の髪を引き裂く。

+0

解決方法を見つけましたか?私は自分のアプリケーションで同じ問題を抱えています。 –

+0

@DaniloVulović私の解決策は下記を参照してください。 – James

答えて

0

私のネットワーク上のMTU設定が間違っていることがわかりました。具体的には、私のFTTCのPPPoE接続は、予想1500の代わりに1492のMTUを持っていました。もう少し前にBTは1492をMTUとして推奨しましたが、これはその後変更されました。わずかに小さいMTUは、通過中のパケットの過剰な断片化を引き起こしていました。パケットの損失の影響を受けやすくなりました。私の接続がリモートサーバ(Azure)によってリセットされた理由は、パケットの損失に苦しんでいました。ファイルをいくつかアップロードしようとすると、パケットが失われてしまったため、サーバは十分に接続していました。

オールインワンの本当に変わった問題ですが、私は修正を見つけることができました!

+0

素晴らしいです。あなたはどのようにして知りました?つまり、どのようにHTTPエラーをMTUのものにリンクさせましたか?ログ? Wireshark? – vtortola

+1

私はWiresharkを使用して何が起こっていたのかを理解し、失敗した送信の膨大な数に気付きました。別のネットワーク(例:自宅)でアップロードを試みたところ、問題は完璧に機能し、これらのエラーは表示されませんでした。私はそれがMTUであることを認識してしまったのを覚えていませんが、確かにそれを修正しました! – James

+0

恐ろしい!問題は、MTUをリセットする代わりに、MVCアプリケーションとAzure内で問題を修正できるかどうかです。私たちは、世界中の有線ネットワークだけでなく、いくつかの異なるWI-FIネットワークを使用してこの問題を抱えています。 MTUの変更をユーザーに依頼する必要があるということです –

関連する問題