【发布时间】: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