바쁘다고 정리를 안하고 넘어가다 보니 자꾸 잊어버려서, 두서는 좀 없더라도 가끔 이것저것 다시 등록해볼까 합니다.
그 첫번째로 .NET Framework 4.0의 기능 중 하나인 URL Routing을 Windows 2008 R2에 세팅하면서 겪은 문제해결 방법을 포스팅합니다.
1. 개요
- .NET Framework 4.0 에서 제공되는 Routing기능을 이용하기로 함
- 응용 프로그램 속성에서 ASP.NET을 4.0환경으로 설정하고 빌드해야 함
- 본 기능은 ASP.NET MVC2에 포함된 기능을 가볍게 이용할 때 유용할 것으로 보임
2. 웹프로그램 설정
2.1 Global.asax 가 없다면 추가함
2.2 Application_Start 메소드에 라우팅 함수호출 추가
protected void Application_Start(object sender, EventArgs e)
{
// 여기에 라우팅 작성 하거나
RouteTable.Routes.MapPageRoute("이름", "{패턴}", "~/{패턴}.aspx");
// 별도 함수로 작성하거나
RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("Search", "search/{service}", "~/{service}.aspx", false, new RouteValueDictionary { { "service", "test" } });
/*
routes.MapPageRoute("", "SalesReport/{locale}/{year}/{*queryvalues}", "~/sales.aspx");
routes.MapPageRoute("SalesSummaryRoute", "SalesReportSummary/{locale}", "~/sales.aspx");
routes.MapPageRoute("SalesDetailRoute", "SalesReportDetail/{locale}/{year}/{*queryvalues}", "~/sales.aspx", false);
routes.MapPageRoute("SalesCurrentYearRoute", "SalesReportCurrent/{locale}/{year}/{*queryvalues}", "~/sales.aspx", false, new RouteValueDictionary { { "locale", "US" }, { "year", DateTime.Now.Year.ToString() } });
routes.MapPageRoute("ExpenseCurrentYearRoute","ExpenseReportCurrent/{locale}", "~/expenses.aspx", false,
new RouteValueDictionary { { "locale", "US" }, { "year", DateTime.Now.Year.ToString() } },
new RouteValueDictionary { { "locale", "[a-z]{2}" }, { "year", @"\d{4}" } });
routes.MapPageRoute("ExpenseDetailRoute", "ExpenseReportDetail/{locale}/{year}/{*queryvalues}", "~/expenses.aspx", false,
new RouteValueDictionary { { "locale", "US" }, { "year", DateTime.Now.Year.ToString() } },
new RouteValueDictionary { { "locale", "[a-z]{2}" }, { "year", @"\d{4}" } },
new RouteValueDictionary { { "account", "1234" }, { "subaccount", "5678" } });
*/
}
3. 서버 설정
3.1 Windows 2008 R2에 .NET Framework 4.0은 별도 설치해야 함
3.2 .NET Framework 4.0 설치만으로 UrlRouting이 잘 된다면 별도의 과정이 필요 없지만, 문제가 있다면 아래와 같이 추가적인 등록 후 실행이 가능
3.3 IIS 7.5를 실행해서 서버 홈 화면이나 웹사이트의 IIS항목 중 [처리기 매핑]으로 이동한 뒤, 오른쪽 상단의 [작업] 중 [관리되는 처리기 추가..]를 실행해 아래와 같이 등록
형식 : System.Web.Routing.UrlRoutingModule
위의 방식은 Visual Studio에서 게시를 할 때마다, [처리기 매핑]의 항목이 초기화 되는 문제가 있어서, 아래와 같이 web.config에 등록과 관련한 코드를 추가하도록 함
<system.webServer>
<handlers>
<add name="UrlRouting" path="*" verb="GET,POST" type="System.Web.Routing" preCondition="integratedMode" />
</handlers>
</system.webServer>
3.4 다음으로 웹사이트의 응용 프로그램 풀의 설정을 체크해야 함
: 사용하는 풀의 .NET Framework 버전과 ID 항목이 아래와 같이 되어 있는지 확인 필요
4. 테스트
4.1 Global.asax 의 2번째 인자를 "test/{service}", 3번째 인자를 "~/{service}.aspx" 로 설정했고, 웹사이트 루트에 abc.aspx가 있다면, 브라우져에서 http://localhost/test/abc 라고 호출 시, abc.aspx 의 내용이 확인될 것임
5. 비고
5.1 아래의 URL 참조하면 실제 파일명을 직접 호출하지 못하도록 제한도 가능
http://jack-fx.com/csharp/routetable-routes-mappageroute-tag/
'Development' 카테고리의 다른 글
MS Word의 매크로(VBA) 를 이용한 텍스트 추출 (0) | 2007.10.16 |
---|---|
Prototype에서 Ajax를 이용한 동적HTML (0) | 2006.12.11 |
웹페이지 레이아웃 구성시 반드시 지킬 것들.. (0) | 2006.10.20 |
Excel 서버객체 이용하기 (0) | 2006.09.12 |
에디트 플러스 - Key매크로 (2) | 2006.09.12 |