我试图让 Glimpse 让我看看在 POST 操作中由“return RedirectToAction()”触发的 GET 操作之前的 POST 操作期间发生了什么。我发现这篇 SO 帖子解释了:
您可以使用 Glimpse 的远程选项卡查看过去的请求。
单击远程选项卡,然后选择右侧的“启动”链接。然后,这将向您显示该客户端随时间发出的请求列表。
然后,您可以从该列表中单击给定请求的“启动”链接,以查看该过去请求的所有 Glimpse 信息(包括日志记录)。这在 Glimpse 中通过更改 URL 更改和显示在左上角/状态区域中的字符串“(远程)”来记录。
我的问题是,如果我多次发布,一瞥似乎只想让我通过“远程”选项卡访问第一个 POST。换句话说,当我与我的网站交互时,我想看看最近的 POST 中发生了什么,但 glimplse 似乎只想向我展示第一个 POST 中发生的事情。
通过测试这种行为,我创建了一个简单的 MVC 应用程序(我对 MVC 3 和 MVC 4 都做了同样的过程,结果大致相同):
- 在 Visual Studio 2012 中,创建一个新的 APS.NET MVC 3 Web 应用程序并将其命名为 MVC3App
- 选择互联网应用程序
- 在解决方案资源管理器中右键单击项目,选择管理 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。)
鲍勃