0

Glimpseに、POSTアクションの「returnRedirectToAction()」によってトリガーされるGETアクションの前にPOSTアクション中に何が起こったかを確認させようとしています。私は説明するこのSO投稿を見つけました:

Glimpseのリモートタブを使用して過去のリクエストを表示できます。

リモートタブをクリックし、右側の[起動]リンクを選択します。これにより、そのクライアントからのリクエストのリストが時間の経過とともに表示されます。

そのリストから、特定のリクエストの[起動]リンクをクリックして、その過去のリクエストのすべてのGlimpse情報(ロギングを含む)を表示できます。これは、URLの変更を変更することでGlimpseに示され、文字列「(Remote)」が左上隅/ステータス領域に表示されます。

私の問題は、POSTを複数回行うと、「リモート」タブから最初のPOSTにアクセスできるようにしたいだけのように見えることです。つまり、自分のWebサイトを操作しているときに、最新のPOSTで何が起こったかを確認したいのですが、glimplseは、最初のPOSTで何が起こったかを表示したいだけのようです。

この動作をテストするために、単純なMVCアプリを作成しました(MVC3とMVC4の両方で同じ手順を実行しましたが、ほぼ同じ結果になりました)。

  1. Visual Studio 2012で、新しいAPS.NET MVC 3 Webアプリケーションを作成し、MVC3Appという名前を付けます
  2. インターネットアプリケーションを選択
  3. ソリューションエクスプローラーでプロジェクトを右クリックし、[NuGetパッケージの管理]を選択して、Glimpse for ASP.NET MVC3(ベータ版)(バージョン0.87)をインストールします。

HomeController.csを次のように変更します

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Diagnostics;
using MVC3App.Models;

namespace MVC3App.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "My test";

            // Initialize the model data
            if (Session["value"] == null) Session["value"] = 1;

            // Get a view model
            var mvm = new MyViewModel() {
                Value = Convert.ToInt32(Session["value"])
            };

            // Display the view
            return View(mvm);
        }

        [HttpPost]
        public ActionResult Index(MyViewModel mvm)
        {
            Trace.TraceInformation("POST: Value = {0}", mvm.Value);

            // Fetch the POST data and store it in the model data
            Session["value"] = mvm.Value;

            // Redirect back to the "display" page
            return RedirectToAction("Index");
        }

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

Models\MyViewModel.csを追加します

namespace MVC3App.Models
{
    public class MyViewModel
    {
        public int Value { get; set; }
    }
}

そして最後に、Index.cshtmlを変更します

@model MVC3App.Models.MyViewModel

@{
    ViewBag.Title = "Home Page";
}

@using (Html.BeginForm()) {
    <div>
        Value: @Html.EditorFor(m => m.Value)
    </div>
    <input type="submit" value="Click me" />
}

プロジェクトを実行すると、「1」を含むテキストボックスを含むWebページが表示されます。値を「123」に変更し、「Clickme」ボタンをクリックします。

ここで、WebページにGlimpseパネルを表示すると、おそらくページを表示したGETリクエストからの情報が表示されていることがわかります。[リモート]タブをクリックすると、3つのリクエストと[起動]リンクが表示されます。[起動]リンクをクリックしてから、リスト内のPOSTリクエストの横にある[起動]リンクをクリックすると、値「123」を含むPOSTのデータが表示されます。

次に、Webページの値を「5」に変更し、「Clickme」ボタンをクリックします。では、POSTデータに値が5のPOSTリクエストのデータを表示したいと思います。[Glimpse]パネルの[リモート]タブで、まだ3つのリモートリクエストを使用できることがわかります。[起動]リンクをクリックすると、同じ元の3つのリモートリクエストが表示されます。ボタンをクリックしてトリガーしたPOSTリクエストは表示されません。

だから、私はここで何が欠けていますか?私はこれがうまくいくはずだと思います、そして私はそれをどういうわけか悪用しています...(私はWindows7でIEを使用していることを追加する必要があると思います)

ボブ

4

1 に答える 1

0

GlimpseRC1を使用することをお勧めします。(プレリリースを含めると、NuGetで利用できます)。

新しいバージョンのGlimpseは、リクエスト履歴をより適切に追跡します。

注意:タブはリモートとは呼ばれなくなり、代わりに履歴と呼ばれます。いずれにせよ、それはまったく同じことをします、名前はただ違うだけです。

于 2013-01-07T17:52:48.363 に答える