【问题标题】:How does routing for ASP.NET Web Pages work without global.asax没有 global.asax 的 ASP.NET 网页路由如何工作
【发布时间】:2012-12-21 13:16:00
【问题描述】:

安装了 ASP.Net 4.0 的 Web 服务器,部署了 Web Pages 2.0 DLLs bin。用 cshtml/razor 编写的页面,但路由不起作用。

当仅使用网页而不是完整的 MVC(我将在 global.asax 中定义我的路由)时,服务器上需要什么来激活路由?

现在我只能使用传统的 URL 和查询字符串来调用我的页面。

任何指针表示赞赏。

【问题讨论】:

  • 您是否在 bin 文件夹中包含“System.Web.Mvc.dll”和“System.Web.Routing.dll”?
  • 拥有 MVC 之一。只需添加路由,但这并没有什么区别。我认为无论如何都会在服务器上的 GAC 中。
  • 您使用的是哪个版本的 IIS?
  • 我猜你一定需要更改网站的池。 “集成模式的ASP.Net v4.0”
  • 据我所知,明天将与网络管理员核实。

标签: asp.net-mvc asp.net-mvc-routing asp.net-webpages


【解决方案1】:

Web 表单应用程序

Global.asax

protected void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("",
        "Category/{action}/{categoryName}",
        "~/categoriespage.aspx");
}

MVC 应用程序

Global.asax

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

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

    }

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

更多信息:

How to: Use Routing with Web Forms

ASP.NET Routing not working on IIS 7.0

Deploying ASP.NET MVC 3 to IIS 6

IIS URL Rewriting and ASP.NET Routing

ASP.NET Routing

希望对你有帮助。

【讨论】:

  • 简单的网页应用程序中没有 global.asax。这就是为什么我试图找出可能缺少的东西。不过还是谢谢。
  • @Graeme 我添加了一些链接检查一下。
【解决方案2】:

网页框架中有两种可用的“路由”。默认路由适用于将 URL 与文件路径匹配。它非常灵活,因为它允许填充 UrlData 字典的附加 URL 段,并且可以启用一些对 SEO 友好的 URL 构造。我在这里写过:WebMatrix - URLs, UrlData and Routing for SEO

第二种路由,类似于MVC中可用的路由,需要安装一个包:Routing For Web Pages。安装后,您可以在 _AppStart.cshtml 文件(您需要自己创建)中填充 RouteCollection,也可以在 global.asax 中的 Application_Start 中填充。当您选择添加文件时,您可以通过在选择文件类型对话框中选择全部选项来添加 global.asax 文件。

如果你想知道如何使用路由包,我也写过:More Flexible Routing For ASP.NET Web Pages

【讨论】:

    猜你喜欢
    • 2012-07-27
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 2021-11-22
    • 1970-01-01
    • 2015-11-18
    相关资源
    最近更新 更多