2

私は以前に同様の質問を投稿しましたが、応答がなかったので、もっと具体的にしようとしました(たくさんのテストの後でこれを行うことができました)。私は押し続けるつもりはありませんが、これはショーストッパーであり、私を夢中にさせています。

MVC3アプリケーションがあります。その中に、次の2つのメソッドを含むテストコントローラーがあります。

public ActionResult Test2()
{
    return View();
}

public ActionResult Test2Get()
{
    System.Threading.Thread.Sleep(270000);
    var x = "Author = x";
    return Json(x,JsonRequestBehavior.AllowGet);
}

Test2ビューは次のとおりです。

@{
    ViewBag.Title = "Test2";
}

<h2>Test2</h2>

<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            url: 'http://www.lp-web.net/Test/Test2Get',
            type: 'GET',
            success: function (result) { alert('success'); }
        });
    });
</script>

ご覧のとおり、Test2ビューは、4.5分間スリープしてから、JSONを返すメソッドへの「ロード時」のコールバックを実行するだけです。

Azureエミュレーターを介してVSでローカルに実行すると、これはすべてのブラウザーで正常に機能します。Azure以外のバージョンを構築し、ホストされたサーバーにデプロイすると、これはすべてのブラウザーで正常に機能します。「動作する」とは、「成功」メッセージを含むアラートが表示されることを意味します。

ただし、Windows Azureにデプロイすると、Chromeを使用している場合にのみ機能します。それ以外の場合、アラートは表示されません。

他にもちょっとした情報があります。たとえば、スリープ時間が4分以下に設定されている場合、アプリがAzureにデプロイされている場合でも、すべてのブラウザーが機能します。しかし、私はそれがどのような関連性を持っているのか本当にわかりません。

私は誰かが私がどこを見ることができるかについての考えを持っていることを望んでいました。誰かがこれを自分で試してみたい場合は、http: //www.lp-web.netにアクセスし、[Test2]アクションリンクをクリックして、4.5分待ちます。それが「私だけ」なのか知りたいです。

アドバイスをよろしくお願いします。

4

1 に答える 1

1

ロードバランサーで接続がタイムアウトしているようです。ロードバランサのタイムアウトのデフォルトは4分(以前は1分)で、その後接続がリセットされます。

Chromeが機能する理由を完全に説明しているわけではありません。ただし、このスレッドの下部には、 IEとFirefoxに影響を与える同様の動作があったことがわかります(明示的に名前を付けることで、Chromeでは発生しないことを暗示する可能性がありますか?)

ロードバランサーの影響とその修正方法の詳細については、WindowsAzureロードバランサーのタイムアウトの詳細を確認してください。

于 2012-09-07T02:36:20.017 に答える