【问题标题】:Routing on ASP.NET website (not WebForm application and not MVC)ASP.NET 网站上的路由(不是 WebForm 应用程序,也不是 MVC)
【发布时间】:2011-12-01 09:15:43
【问题描述】:

我可以使用 web.config 或 Global.asax 在 asp.net 网站(文件夹结构)中进行路由吗?

基本上我想要

http://www.something.com/agents/10/TheAgentsName

http://www.something.com/portfolio.aspx?caid=10

代理名称仅用于 URL 中的“装饰”。

我找到了几个示例,但它们都适用于 MVC 或 WebForms 应用程序。

在尝试实现 Global.asax 时,它一直说 System.Web.Routing 在命名空间中不存在。这就是我的 Global.asax 现在的样子(它无法运行)!

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e) 
    {
        RegisterRoutes(System.Web.Routing.RouteTable.Routes);

    }

    void RegisterRoutes(System.Web.Routing.RouteCollection routes)
    {
        routes.MapPageRoute("AgentPortfolioByName", "agents/{id}/{name}", "portfolio.aspx");
    }

    void Application_End(object sender, EventArgs e) 
    {
    }

    void Application_Error(object sender, EventArgs e) 
    { 
    }

    void Session_Start(object sender, EventArgs e) 
    {
    }

    void Session_End(object sender, EventArgs e) 
    {
    }

</script>

Global.asax Application_Start 执行良好(我尝试设置断点)。但它只是不明白 System.Web.Routing 是什么。在 web.config 我有这些条目:

<compilation debug="true">
            <assemblies>
                <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
        </compilation>

......

<httpModules>
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="RoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        </httpModules>

........

<system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <modules>
            <remove name="ScriptModule"/>
            <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </modules>

【问题讨论】:

  • 如果您不使用 WebForms 或 MVC,那么您认为您使用的是什么其他类型的 ASP.NET??
  • 您知道在 Visual Studio 中您可以选择“新建项目 -> ASP.NET WebForms 应用程序”或“新建网站”。这是一个网站。这意味着 Global.asax 没有例如代码隐藏。

标签: asp.net routing web-config global-asax


【解决方案1】:

您可以使用 Global.asax 来实现路由。我认为您以某种方式缺少应用程序中的 System.Web.Routing.dll 引用。请确保您引用的是这个。另外请确保您在 Global.asax 中导入 System.Web.Routing 命名空间。如果对理解网站应用程序中处理 Global.asax 文件有帮助,请通过以下链接。

http://beyondrelational.com/blogs/niladribiswas/archive/2011/06/09/adding-the-global-asax-cs-file-in-asp-net-web-site.aspx

请随时联系以进行进一步讨论。

谢谢,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    相关资源
    最近更新 更多