2013-01-06 89 views
0

我想讓Glimpse讓我看看POST動作過程中發生了什麼,在POST動作中由「return RedirectToAction()」觸發的GET動作之前發生了什麼。我發現this SO post解釋爲:試圖查看POST信息與掠影

您可以使用Glimpse的遠程選項卡查看過去的請求。

單擊遠程選項卡,然後選擇右側的「啓動」鏈接。然後這個 將向您顯示該客戶在 時間內發出的請求列表。

從該列表中,您可以點擊「Launch」鏈接查看給定的 請求,查看過去請求的所有Glimpse信息(包括日誌記錄) 。這在Glimpse中通過更改URL更改 和顯示在左上角/狀態 區域中的字符串「(遠程)」來記錄。

我的問題是,如果我POST不止一次,瞥見似乎只想讓我通過「遠程」選項卡訪問第一個POST。換句話說,當我與我的網站進行交互時,我想看看最近一次POST中發生了什麼,但是似乎只想告訴我在第一次POST期間發生了什麼。

通過測試這種行爲方式,我創建了一個簡單的MVC應用程序(我已經這樣做了同樣的方法,用MVC 3和4 MVC都與大致相同的結果):

  1. 在Visual Studio 2012,創建一個新的APS.NET MVC 3 Web應用程序並將其命名爲MVC3App
  2. 選擇互聯網應用
  3. 右鍵單擊Solution Explorer中的項目,選擇管理的NuGet軟件包,併爲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(); 
     } 
    } 
} 

添加型號\ 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數據中看到來自POST請求的數據值爲5。在「掠景」面板的「遠程」選項卡上,您會看到它仍然有3個可用的遠程請求。點擊啓動鏈接顯示相同的原始3個遠程請求。它不會顯示我通過單擊按鈕觸發的POST請求。

那麼,我在這裏錯過了什麼?我認爲這應該工作,我只是濫用它在某種程度上...(我想我要補充一點,我使用的是IE瀏覽器在Windows 7中)

鮑勃

回答

0

我建議您嘗試使用掠影RC1。 (如果包含預發行版,則在NuGet上可用)。

Glimpse的較新版本可以更好地跟蹤請求歷史記錄。

請注意:該選項卡不再被稱爲遠程,而是被稱爲歷史。無論哪種方式,它完全相同的事情,名稱是不同的。

+0

當我安裝Glimpse RC1時,Glimpse完全消失。執行我現有的書籤scriptlet(啓用Glimpse)不啓用它。導航到MyURL/glimpse.axd會返回「404 - 未找到」。我在兩個不同的MVC 4應用程序中嘗試了這一結果。 –

+0

更新:在這兩種情況下(上述),我都沒有先刪除現有的Glimpse軟件包,而是安裝了Glimpse並安裝了Glimpse RC1的項目。安裝者聲稱它爲我刪除了早先的Glimpse軟件包。我會嘗試在今天晚些時候的一個新的項目中添加Glimpse RC1 ... –

+0

您是否正在安裝'Glimpse.MVC3'項目?或者只是'瞥見'。 – nikmd23