我不知道发生了什么,但是突然我的控制器动作没有被调用。这个项目一整天都在正常工作,但现在当我运行它(在Cassini或IIs7中)时,我得到“InternetExplorer无法显示网页”。没有服务器错误,甚至没有404或500错误。
在单步执行代码的过程中,我可以看到在应用程序启动期间正确注册了路由。在正确的控制器上调用Constructor和Initialize方法,然后…..无。我能够检查进入我的控制器上的初始化方法的requestContext,并且框架已经获取了正确的路由数据。我所有的控制器都会发生这种情况。另一个MVC项目在同一台机器上运行得很好。
我完全迷路了。任何帮助都将非常感谢,因为我有12月1日这个项目的最后期限。
谢谢,
杰夫·弗伦奇
以下是我的一些代码:
我的家庭控制器不工作:
public class HomeController : Controller
{
public HomeController():base()
{
}
protected override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
}
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
}
protected override void HandleUnknownAction(string actionName)
{
base.HandleUnknownAction(actionName);
}
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
}
我添加了重写,这样我就可以在它们中设置断点来查看被调用的内容。先调用构造函数,然后调用初始化方法。传递给initialize方法的requestContext包含正确的路由数据。一旦initailize方法完成执行,我就会收到“Internet Explorer cannot display the webpage”消息。
我的Glogal.asax:
public class MvcApplication : HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{tenant}/{controller}/{action}/{id}",
new {tenant = "demo", controller = "Home", action = "Index", id = ""}
);
}
public void RegisterViewEngines(ViewEngineCollection engines)
{
}
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
RegisterViewEngines(ViewEngines.Engines);
}
}