ASP.NET-MVC中的“未找到”错误

3
每次运行某个应用程序时,都会显示“未找到”错误alt text。有人知道如何解决吗?我在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
        );

我尝试了我能想到的一切,但它没有起作用。

请发布您的路由配置和错误信息(我们看不到它...) - Dani
你是否没有设置任何路由来处理基本URL? - Colin Mackay
6个回答

0

请尝试检查以下 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


0

从外观上看,您似乎没有设置默认路由。请尝试以下操作:

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

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


0
你在运行这个程序的时候使用的是哪个Web服务器?VS Dev/Cassini?还是IIS?请检查一下根目录中是否有default.aspx文件。有些Web服务器需要一个虚拟的根目录default.aspx文件才能使MVC正常工作。

0

如果您正在使用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,则应该可以直接使用。在这种情况下,我不清楚。


这篇文章提供了有关在IIS 5.1上部署的完整评论列表https://dev59.com/aHVC5IYBdhLWcg3wbQbA。它有点繁琐。 - Crab Bucket

0

如果你已经把所有东西都放在了正确的位置,那么问题可能是:

  • 路由配置不正确。很可能你没有为你的Controller/Action设置适当的默认值。
  • 你正在使用较旧版本的IIS,而且它们没有正确配置。请参见this获取说明。

0
根据问题中的评论,我在default.aspx.cs文件中的page_load事件上放置了调试器,但它没有被调用。以下是路由配置:
  • 您是否尝试将default.aspx设置为项目的启动页面。
并且在IIS虚拟目录中也是如此。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接