중간 거래 SEO 진단 Taobao 게스트 클라우드 호스트 기술 홀
asp.net 주소 매핑 사용자 액세스, 가상 주소 지도의 실제 파일로 정의 되 고 가상 주소 정적 페이지를 있을 수 있습니다. 예를 들면: Http://fuzhou.naoqiu.com/bus 페이지에 방문, 실제로 the/bus.aspx 페이지를 방문.
asp.net 주소 매핑은 HttpModule 요청 원리를 통해 이루어집니다.
HttpModule 원리는 무엇입니까?
HTTP 요청 HttpModule 컨테이너의 전달 중 한 번 (Resolverequestcache 이벤트)에 HttpHandler 컨테이너에 HTTP 요청에 전달합니다. 이 이벤트 후 HttpModule 컨테이너 HttpHandler 항목 인스턴스를 만들지만 HTTP 요청 컨트롤은이 시간에 항복 하지. 대신, 그것 acquirerequeststate 이벤트와 Prerequesthandlerexcute 이벤트를 실행 하 고 있습니다. Prerequesthandlerexcute 이벤트 후 HttpModule 창은 실제 HTTP 요청 처리에 대 한 HttpHandler 컨테이너를 일시적으로 컨트롤을 손.
ProcessRequest 메서드는 HTTP 요청을 처리할 HttpHandler 컨테이너 안에서 실행 됩니다. 컨테이너 후 전체 HTTP 요청을 처리 하는 HttpHandler 컨트롤 반환 됩니다 Httpmodule, httpmodule, 클라이언트에 반환 될 때까지 처리 HTTP 요청 흐름의 전달 계층을 계속.
빌려 보 친구 사진
원리 이해, 후 나 다음 코드로 간단한 주소 지도 완료 합니다.
먼저 주소 지도 기본 클래스 완료.
< 요약 >
주소 다시 쓰기
</요약 >
공용 추상 클래스 Basemodulerewriter:ihttpmodule
{
< 요약 >
초기화 호출
</요약 >
< param name = "응용 프로그램" >< / param >
공용 가상 void Init (HttpApplication 응용 프로그램) 없음
응용 프로그램입니다. BeginRequest + = 새로운 EventHandler (app_beginrequest);
}
공용 가상 void Dispose () {}
< 요약 >
요청 시작
</요약 >
< param 이름을 "보낸 사람" = >< / param >
< param name = "E" >< / param >
가상 void App_beginrequest (개체 sender, EventArgs e) 보호
{
HttpApplication app HttpApplication;으로 보낸 사람 =
(응용 프로그램)를 다시;
}
< 요약 >
작업의 추상 메서드
</요약 >
< param name = "응용 프로그램" >< / param >
보호 된 추상 무효 재작성 (HttpApplication app);
}
주소 매핑 작업에 대 한 필요성을 완료 하는 기본 클래스를 상속:
보호 재정의 무효 재작성 (HttpApplication 애플 리 케이 션)
{
HttpContext 컨텍스트 = 애플 리 케이 션. 컨텍스트;
HttpRequest 요청 = 애플 리 케이 션. 요청;
부분 문자열 = Regex.match (요청입니다. Url.tostring (), @ "(? < = http\: \ / \ /). *"). Value.tolower의 행정구역 트림 ('/');
경우 (부분. IndexOf ("/") = = 1)
{
부분 = Regex.match (부분, @ "^ \w+"). 값;
스위치 (부분)
{
'버스' 경우: 컨텍스트. RewritePath ("/ bus.aspx"); 휴식;
경우 "www":
경우 "Naoqiu": 컨텍스트입니다. RewritePath ("/ default.aspx"); 휴식;
기본값: 컨텍스트입니다. RewritePath ("/ index_city.aspx"); 휴식;
}
}
}
그래서 우리가 할 건가요? 예, 그것은 구성 파일입니다. 여러 장소 같이 Web.config 파일을 수정할 수 있습니다.
<!-규칙 요청->
< httpModules >
< 추가 이름 "Bianminmodulerewriter" =
유형 = "Bianmin.urlrewriter.modulerewriter,bianmin.urlrewriter"/ >
< / httpModules >
< system.webServer >
< 처리기 >
< 이름 추가 = "Aspnet_isapi" 경로 = "*" 동사 = "*" 모듈 "않음" 스크립트 프로세서 = = "C:\Windows\Microsoft.NET\ Framework64\v4.0.30319\aspnet_isapi.dll "resourcetype =" 지정 되지 않음 "requireaccess =" None "전제 조건 =" Classicmode, runtimeversionv4.0, bitness64 "/ >
< / 처리기 >
< defaultDocument >
< 파일 >
< 취소 / >
< 가치 = "default.aspx"/ >
< / 파일 >
< / defaultDocument >
< /system.webServer >
참고: Framewore 2..0를 사용 하 여 필요한 \aspnet_isapi.dll 파일 경로 변경 하려면
소스 코드 다운로드 주소: http://download.naoqiu.com 다운로드