MVC 후, 세션 모드는 일반적이지되었을 수도 있지만 여전히 페이지 확인 코드 등으로 가끔 사용된다. 뷰 컨트롤러가 사용하는 예 로그인 페이지 코드 달성 들어, 세션의 값을 저장하는데 사용될 수있다. WebApi 요청을 처리 할 수 있습니다에하지만 지금은 일반적으로 사용되는, MVC4 응용 프로그램이 기본 모드에 따라 건립, WebApi는 우리는 특정 구성이 필요 세션의 값이 컨트롤러가 보유보다 작 걸릴 것입니다. 다음과 같이 기록 :
첫 번째 단계는 : 단순히 라우팅 WebApi의 수정을 준비하기 위해 두 개의 클래스를 생성
첫 번째 클래스 HttpControllerHandler로부터 상속 SessionRouteHandler, 거기에는 내부 방법입니다, 따라서 무엇을 작성할 필요가 없습니다 실제로 무엇을 IRequiresSessionState 인터페이스 IRequiresSessionState 동시에 실현에.
1 공용 클래스 SessionRouteHandler : HttpControllerHandler , IRequiresSessionState 2- { 3 공개 SessionRouteHandler ( 으로 RouteData 으로 RouteData) 베이스 (으로 RouteData) -4- { 5 } 6 }
HttpControllerRouteHandler로부터 상속 번째 클래스 SessionControllerRouteHandler,
1 공용 클래스 SessionControllerRouteHandler : HttpControllerRouteHandler 2 { 3 보호 재정 을 IHttpHandler GetHttpHandler ( RequestContext requestContext) 4 { 5 반환 새로운 SessionRouteHandler (requestContext.RouteData); 6 } 7 }
이 두 클래스 종료 후 다음 단계에 대한 것입니다.
단계 : App_Start 디렉토리가 우리 때문에하는 것입니다에서 수정 WebApiConfig는 초보자 알림에이 클래스는, 정상적인 상황에서 진행 여기 ...... 글로벌, WebApiConfig.Register (에서 볼 수 있습니다. WebApi GET 세션 MVC 컨트롤러 세트에이 구성에서 다시보기로 변경.
1 개 공용 정적 클래스 WebApiConfig 2- { 3 공공 정적 무효 레지스터 (HttpConfiguration 구성) -4- { 5 // config.Routes.MapHttpRoute ( 6 // "DefaultApi"이름 7 // routeTemplate "API / 제어기 {} / {이드 } ", 8 // 기본값 : 새로운 {ID = RouteParameter.Optional} 9 // ); 10 // 경로上传递세션 11 RouteTable.Routes.MapHttpRoute ( 12 이름 : "DefaultApi " , 13 routeTemplate : " API / 제어기 {} / {ID} " , 14 기본값 : 새로운 {식 RouteParameter.Optional}) = RouteHandler. 새로운 SessionControllerRouteHandler (); 15 } 16 }
다음은 RouteTable에서 직접 구성 및 빌드로 우리에게 SessionControllerRouteHandler RouteHandler 첫 번째 단계를 지정합니다. 여기에 우리가 어떤 동작을 지정해야하기 때문에 그러나 이러한 노력은 세션 전송 것 여전히 실패, 완료했다.
세 번째 단계 : 수정 글로벌.
Global.asax.cs 코드 재정에서의 초기화 방법은 다음 코드를 추가합니다 :
1 공용 대체 공극 초기화 () 2 { 3 PostAuthenticateRequest + = (S, E) => HttpContext.Current.SetSessionStateBehavior (SessionStateBehavior.Required); 4 베이스 .Init (); 5 }
모두의 완성이 시간을 컴파일 될 수 있으며, 이후 글쎄, 당신은 예를 들어, 일반적인 방법으로 세션 컨트롤러를 만들 수 있습니다 :
세션 [ " ValidCode " = " 세션 테스트 "
당신은 WebApi에서 얻을 수 있습니다 :
HttpContext.Current.Session [ " ValidCode " ]로 .toString ()
MVC 후, 세션 모드는 일반적이지되었을 수도 있지만 여전히 페이지 확인 코드 등으로 가끔 사용된다. 뷰 컨트롤러가 사용하는 예 로그인 페이지 코드 달성 들어, 세션의 값을 저장하는데 사용될 수있다. WebApi 요청을 처리 할 수 있습니다에하지만 지금은 일반적으로 사용되는, MVC4 응용 프로그램이 기본 모드에 따라 건립, WebApi는 우리는 특정 구성이 필요 세션의 값이 컨트롤러가 보유보다 작 걸릴 것입니다. 다음과 같이 기록 :
첫 번째 단계는 : 단순히 라우팅 WebApi의 수정을 준비하기 위해 두 개의 클래스를 생성
첫 번째 클래스 HttpControllerHandler로부터 상속 SessionRouteHandler, 거기에는 내부 방법입니다, 따라서 무엇을 작성할 필요가 없습니다 실제로 무엇을 IRequiresSessionState 인터페이스 IRequiresSessionState 동시에 실현에.
1 공용 클래스 SessionRouteHandler : HttpControllerHandler , IRequiresSessionState 2- { 3 공개 SessionRouteHandler ( 으로 RouteData 으로 RouteData) 베이스 (으로 RouteData) -4- { 5 } 6 }
HttpControllerRouteHandler로부터 상속 번째 클래스 SessionControllerRouteHandler,
1 공용 클래스 SessionControllerRouteHandler : HttpControllerRouteHandler 2 { 3 보호 재정 을 IHttpHandler GetHttpHandler ( RequestContext requestContext) 4 { 5 반환 새로운 SessionRouteHandler (requestContext.RouteData); 6 } 7 }
이 두 클래스 종료 후 다음 단계에 대한 것입니다.
단계 : App_Start 디렉토리가 우리 때문에하는 것입니다에서 수정 WebApiConfig는 초보자 알림에이 클래스는, 정상적인 상황에서 진행 여기 ...... 글로벌, WebApiConfig.Register (에서 볼 수 있습니다. WebApi GET 세션 MVC 컨트롤러 세트에이 구성에서 다시보기로 변경.
1 개 공용 정적 클래스 WebApiConfig 2- { 3 공공 정적 무효 레지스터 (HttpConfiguration 구성) -4- { 5 // config.Routes.MapHttpRoute ( 6 // "DefaultApi"이름 7 // routeTemplate "API / 제어기 {} / {이드 } ", 8 // 기본값 : 새로운 {ID = RouteParameter.Optional} 9 // ); 10 // 경로上传递세션 11 RouteTable.Routes.MapHttpRoute ( 12 이름 : "DefaultApi " , 13 routeTemplate : " API / 제어기 {} / {ID} " , 14 기본값 : 새로운 {식 RouteParameter.Optional}) = RouteHandler. 새로운 SessionControllerRouteHandler (); 15 } 16 }
다음은 RouteTable에서 직접 구성 및 빌드로 우리에게 SessionControllerRouteHandler RouteHandler 첫 번째 단계를 지정합니다. 여기에 우리가 어떤 동작을 지정해야하기 때문에 그러나 이러한 노력은 세션 전송 것 여전히 실패, 완료했다.
세 번째 단계 : 수정 글로벌.
Global.asax.cs 코드 재정에서의 초기화 방법은 다음 코드를 추가합니다 :
1 공용 대체 공극 초기화 () 2 { 3 PostAuthenticateRequest + = (S, E) => HttpContext.Current.SetSessionStateBehavior (SessionStateBehavior.Required); 4 베이스 .Init (); 5 }
모두의 완성이 시간을 컴파일 될 수 있으며, 이후 글쎄, 당신은 예를 들어, 일반적인 방법으로 세션 컨트롤러를 만들 수 있습니다 :
세션 [ " ValidCode " = " 세션 테스트 "
당신은 WebApi에서 얻을 수 있습니다 :
HttpContext.Current.Session [ " ValidCode " ]로 .toString ()