2011-10-05 2 views
2

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> 
+5

WebForms 또는 MVC를 사용하고 있지 않다면 어떤 종류의 ASP.NET을 사용하고 있다고 생각합니까 ?? –

+1

Visual Studio에서 "새 프로젝트 -> ASP.NET WebForms 응용 프로그램"또는 "새 웹 사이트"를 선택할 수 있습니다. 이것은 웹 사이트입니다. 즉, Global.asax에는 예를 들어 코드 숨김이 없습니다. – Jesper

답변

0

당신이 사용할 수있는 Global.asax에 : Web.config의에서 나는 이러한 항목이 구현 라우팅. 응용 프로그램에서 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

하십시오

은 추가 논의를 위해 연락을 무료로 떨어졌다.

감사합니다,

관련 문제