![](/img/trans.png)
[英]How can I unit test that Windsor can resolve Asp.net MVC3 controller dependencies?
[英]in ASP.NET MVC3 how can I see the request?
我正在使用一条简单的路线
routes.MapRoute(
"Default2", // Route name
"{cliurl}/{id}", // URL with parameters
new { cliurl = "none", controller = "ABook", action = "Index", id = "none" } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{cliurl}/{controller}/{action}/{id}", // URL with parameters
new { cliurl = "none", controller = "ABook", action = "Index", id = "none" } // Parameter defaults
);
当我调试网站(VS2010 SP1)时,我的ABook
Controller中有一个断点,其中Index
动作方法witch仅包含:
//
// GET: /ABook/
public ActionResult Index()
{
if (currentClient == null)
return RedirectToAction("Empty");
return View();
}
//
// GET: /Empty/
public ActionResult Empty()
{
return View();
}
事实是,当我在浏览器中插入以下代码时:
http://localhost:14951/client_name/hashed_id
我在那个断点处休息了3次 。
我怎么看世界上发生了什么? 为什么我刚请求1次时3次,浏览器到底请求了什么?
我只能得到Route Parameters,但确实得到第一个正确的参数,但是2nd和3rd使用的是默认值,我试图浏览RequestContext
,但看不到任何有用的方法:(
只想知道是否有一种方法可以真正查看所请求的内容。
如果控制器内部有断点,则可以使用watch,您可以在其中简单地创建新的watch。 输入Request
并搜索...
每个Controller中都有一个称为Request的属性。 它实际上是在System.Web.Mvc.Controller中定义的,它是所有控制器的超类。 该属性将原始的Request对象作为HttpRequestBase返回,并公开诸如InputStream,Headers,HttpMethod之类的字段,依此类推。
至于为什么您要3次点击index方法,我确定浏览器发出的其他请求(例如,图像,javascript和其他现有文件)也将由您定义的路由处理。 简而言之,您的路线定义过于笼统,无法处理意外请求。 您可以通过使用Route.IgnoreRoute(“ Path / to / Existing / Files”)或通过添加RouteConstraints使路线更具体来纠正此问题。 如果您想知道如何发表评论。
您可以使用提琴手查看浏览器的要求,也可以尝试从routdebugger
下载routdebugger。
我知道其他人对此有所刺...他们是正确的:
使用Request
对象来查找正在请求的内容。 您的控制器可能错误地处理了这件事。 在使用该方法从Request
调试时,应铲除一些输出,例如原始url。 那可能会回答这个问题。
作为建议,为什么不为应用程序连接BeginRequest
事件处理程序,该处理程序将允许您查看每个请求通过。 还有一个HttpContext.Current.Request.Url
对象可以检查
// Global.asax
public MvcApplication()
{
BeginRequest += new EventHandler(MvcApplication_BeginRequest);
}
void MvcApplication_BeginRequest(object sender, EventArgs e)
{
Debug.WriteLine("[Start] Requested Url: " + HttpContext.Current.Request.RawUrl);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.