我正试图让Glimpse让我看看在POST操作中由“return RedirectToAction()”触发的GET操作之前的POST操作期间发生的事情。我发现this SO post解释了:
您可以使用Glimpse的远程标签查看过去的请求。
单击远程选项卡,然后选择右侧的“启动”链接。这个 然后会显示从该客户端发出的请求列表 时间。
然后,您可以从该列表中单击给定的“启动”链接 请求查看所有Glimpse信息(包括日志记录) 过去的要求。通过更改URL更改在Glimpse中注明了这一点 字符串“(Remote)”显示在左上角/状态 区域。
我的问题是,如果我多次POST,瞥见似乎只想让我通过“远程”选项卡访问第一个POST。换句话说,当我与我的网站进行交互时,我想看看最近发布的帖子中发生了什么,但只是想看看我在第一次POST时发生了什么。
通过测试这种行为,我创建了一个简单的MVC应用程序(我使用MVC 3和MVC 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。)
鲍勃
答案 0 :(得分:0)
我建议您尝试使用Glimpse RC1。 (如果包含预发行版,则可在NuGet上使用)。
较新版本的Glimpse可以更好地跟踪请求历史记录。
请注意:该标签不再称为“远程”,而是称为“历史记录”。无论哪种方式,它完全相同,名称只是不同。