我可以使用web.config或Global.asax在asp.net网站(文件夹结构)中进行路由吗?
基本上我想要
http://www.something.com/agents/10/TheAgentsName
转到
http://www.something.com/portfolio.aspx?caid=10
代理商名称仅适用于网址中的“装饰”。
我找到了几个例子,但它们都适用于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>
答案 0 :(得分:0)
您可以使用Global.asax实现路由。我想你在某种程度上错过了应用程序中的System.Web.Routing.dll引用。请确保您参考这个。另外,请确保在Global.asax中导入System.Web.Routing命名空间。如果有助于理解网站应用程序中处理Global.asax文件,请查看以下链接。
请随时联系以进一步讨论。
谢谢,