web.config 또는 Global.asax를 사용하여 asp.net 웹 사이트 (폴더 구조)에서 라우팅 할 수 있습니까?ASP.NET 웹 사이트에서 라우팅 (MVC가 아닌 WebForm 응용 프로그램이 아님)
기본적으로 나는
http://www.something.com/agents/10/TheAgentsName
그냥 URL에서 "장식"에 대한
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이 무엇인지 이해하지 못합니다.
<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에는 예를 들어 코드 숨김이 없습니다. – Jesper