ASP.Net MVC 2:我的控制器操作未被​​调用

时间:2009-11-26 07:02:45

标签: asp.net-mvc

我不确定发生了什么,但突然我的控制器动作没有被调用。这个项目一整天都运行良好,但现在当我运行它(在Cassini或IIS 7中)时,我得到“Internet Explorer无法显示网页”。没有服务器错误,甚至没有404或500错误。

在单步执行代码时,我可以看到路由在应用程序启动期间已正确注册。在正确的控制器上调用contstructor和Initialize方法然后.....什么都没有。我能够在我的控制器上检查进入Initialize方法的requestContext,并且框架已经选择了正确的Route Data。所有控制器都会发生这种情况。另一个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()
    {
        //if (!Request.IsAuthenticated)
        //    return RedirectToAction("LogOn", "Account");
        return View();
    }

    public ActionResult About()
    {
        return View();
    }
}

我添加了覆盖,以便我可以在其中设置断点以查看正在调用的内容。然后调用构造函数Initialize方法。传递给Initialize方法的requestContext包含正确的路由数据。一旦Initailize方法完成执行,我就会得到“Internet Explorer无法显示网页”消息。

我的Glogal.asax:

public class MvcApplication : HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{tenant}/{controller}/{action}/{id}", // URL with parameters
            new {tenant = "demo", controller = "Home", action = "Index", id = ""} // Parameter defaults
            );
    }

    public void RegisterViewEngines(ViewEngineCollection engines)
    {
    }

    protected void Application_AuthenticateRequest(object sender, EventArgs e)
    {
    }


    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
        RegisterViewEngines(ViewEngines.Engines);
    }
}

1 个答案:

答案 0 :(得分:0)

好吧,我已经解决了我的问题,因为事实证明它与MVC或我的代码无关。检查系统事件日志会在本地计算机上显示一系列SSL错误。我的项目中的控制器使用[RequreHttps]属性进行了修饰,因为我需要通过SSL提供此站点。自签名证书在本地计算机上进行测试时效果很好,但突然之间并没有。但是,这是一个完全独立的问题,如有必要,我会将其作为一个单独的问题发布。感谢所有关注此问题的人,感谢您的光临。