【问题标题】:Not found error in asp.net-mvc在 asp.net-mvc 中找不到错误
【发布时间】:2010-12-24 11:47:57
【问题描述】:

每次我运行某个应用程序时,它都会显示 未找到错误

有谁知道如何解决这个问题?

我在 default.aspx.cs 文件中的 page_load 事件上放置了一个调试器,但它没有被调用。

下面是路由配置:

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // parameters
            new { controller = "Home", action = "Index", id = "" }  // Parametedefaults
        );

我尝试了所有我能想到的方法,但没有成功。

【问题讨论】:

  • 请发布您的路由配置和错误(我们看不到..)
  • 可能是您没有设置任何路由来处理基本 URL?

标签: asp.net asp.net-mvc


【解决方案1】:

你在 VS Dev/Cassini 上运行什么网络服务器? IIS? 查看根文件夹中是否有 default.aspx。您需要一个虚拟根 default.aspx 才能使 MVC 与某些网络服务器正常工作。

【讨论】:

    【解决方案2】:

    如果您使用的是 IIS 6,如果您使用的是不带扩展名的 url,则需要通配符映射到 aspnet isapi 过滤器。还有其他选项,例如使用假扩展名,例如mvc 并映射到那个。默认情况下,IIS 6 不知道将没有扩展名的页面视为 asp.net

    Steve Sanderson 发表了一篇关于部署到 IIS 6 (http://blog.stevensanderson.com/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/) 的出色文章。

    当然,如果您使用的是 IIS7,那么它应该开箱即用。在那种情况下我不知道。

    【讨论】:

    【解决方案3】:

    如果你把所有东西都放在他们的位置上,那么它看起来像:

    • 路由配置不正确。您的Controller/Action 很可能没有正确的默认值。
    • 您使用的是较旧的 IIS 版本,并且配置不正确。有关说明,请参阅 this

    【讨论】:

      【解决方案4】:

      尝试检查您的 Default.aspx 代码,如下所示:

      using System.Web;
      using System.Web.Mvc;
      using System.Web.UI;
      
      public partial class Default : System.Web.UI.Page
      {
          protected void Page_Load(object sender, System.EventArgs e)
          {
              HttpContext.Current.RewritePath(Request.ApplicationPath, false);
              IHttpHandler httpHandler = new MvcHttpHandler();
              httpHandler.ProcessRequest(HttpContext.Current);
          }
      }
      

      并且您需要配置您的 iis 的通配符映射,见下文: http://weblogs.asp.net/scottgu/archive/2007/03/04/tip-trick-integrating-asp-net-security-with-classic-asp-and-non-asp-net-urls.aspx

      【讨论】:

        【解决方案5】:

        从外观上看,您没有设置默认路由。试试这个:

        Routes.MapRoute("Site (*)", "{action}", new {
            controller = "Site",
            action = "Default"
        });
        

        这基本上设置了一个根路由,如果没有传入任何内容,则默认操作为“默认”。这也映射到所有根路由,例如/Home/Contact/{Whatever}

        【讨论】:

          【解决方案6】:

          根据有问题的 cmets 我在 default.aspx.cs 文件中的 page_load 事件上放置了调试器,但它没有被调用。下面是路由配置:

          • 您是否尝试过将您的 default.aspx 设置为项目的启动页。

          在 IIS 虚拟目录中也一样。

          【讨论】:

            猜你喜欢
            • 2012-03-06
            • 2023-03-15
            • 1970-01-01
            • 2014-11-29
            • 2014-10-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-02
            相关资源
            最近更新 更多