0

我试图让 Glimpse 让我看看在 POST 操作中由“return RedirectToAction()”触发的 GET 操作之前的 POST 操作期间发生了什么。我发现这篇 SO 帖子解释了:

您可以使用 Glimpse 的远程选项卡查看过去的请求。

单击远程选项卡,然后选择右侧的“启动”链接。然后,这将向您显示该客户端随时间发出的请求列表。

然后,您可以从该列表中单击给定请求的“启动”链接,以查看该过去请求的所有 Glimpse 信息(包括日志记录)。这在 Glimpse 中通过更改 URL 更改和显示在左上角/状态区域中的字符串“(远程)”来记录。

我的问题是,如果我多次发布,一瞥似乎只想让我通过“远程”选项卡访问第一个 POST。换句话说,当我与我的网站交互时,我想看看最近的 POST 中发生了什么,但 glimplse 似乎只想向我展示第一个 POST 中发生的事情。

通过测试这种行为,我创建了一个简单的 MVC 应用程序(我对 MVC 3 和 MVC 4 都做了同样的过程,结果大致相同):

  1. 在 Visual Studio 2012 中,创建一个新的 APS.NET MVC 3 Web 应用程序并将其命名为 MVC3App
  2. 选择互联网应用程序
  3. 在解决方案资源管理器中右键单击项目,选择管理 NuGet 包,然后安装 Glimpse for ASP.NET MVC3 (Beta)(版本 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();
        }
    }
}

添加模型\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”的文本框。将值更改为“123”,然后单击“单击我”按钮。

现在,如果您在网页上显示 Glimpse 面板,您将看到它显示的信息可能来自显示该页面的 GET 请求。如果我单击远程选项卡,它会显示 3 个请求以及一个启动链接。如果我单击 Launch 链接,然后单击列表中 POST 请求旁边的 Launch 链接,则会显示来自 POST 的数据,其中包含值“123”。

现在,将网页上的值更改为“5”,然后单击“单击我”按钮。好的,所以现在我想在 POST 数据中查看值为 5 的 POST 请求中的数据。在 Glimpse 面板的 Remote 选项卡上,您会看到它仍然有 3 个远程请求可用。单击启动链接会显示相同的原始 3 个远程请求。它不显示我刚刚通过单击按钮触发的 POST 请求。

那么,我在这里缺少什么?我认为这应该可以工作,我只是以某种方式滥用它......(我想我应该补充一点,我在 Windows 7 上使用 IE。)

鲍勃

4

1 回答 1

0

I recommend that you try using Glimpse RC1. (Available on NuGet if you Include Prerelease's).

The newer version of Glimpse does a better job of tracking request history.

Please note: the tab is no longer called Remote, but is instead called History. Either way, it does the exact same thing, the name is just different.

于 2013-01-07T17:52:48.363 回答