尝试使用Glimpse查看POST信息

时间:2013-01-06 20:00:39

标签: asp.net-mvc glimpse

我正试图让Glimpse让我看看在POST操作中由“return RedirectToAction()”触发的GET操作之前的POST操作期间发生的事情。我发现this SO post解释了:

  

您可以使用Glimpse的远程标签查看过去的请求。

     

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

     

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

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

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

  1. 在Visual Studio 2012中,创建一个新的APS.NET MVC 3 Web应用程序并将其命名为MVC3App
  2. 选择Internet应用程序
  3. 在解决方案资源管理器中右键单击该项目,选择“管理NuGet包”,然后安装Glimpse for ASP.NET MVC3(Beta)(版本0.87)
  4. 将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”的文本框的网页。将值更改为“123”并单击“单击我”按钮。

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

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

    那么,我在这里错过了什么?我认为这应该可行,我只是在某种程度上滥用它...(我想我应该补充说我在Windows 7上使用IE。)

    鲍勃

1 个答案:

答案 0 :(得分:0)

我建议您尝试使用Glimpse RC1。 (如果包含预发行版,则可在NuGet上使用)。

较新版本的Glimpse可以更好地跟踪请求历史记录。

请注意:该标签不再称为“远程”,而是称为“历史记录”。无论哪种方式,它完全相同,名称只是不同。