ASP.NET MVC에서 세션 상태를 비활성화하려면 어떻게해야합니까?
가능한 한 많은 일반적인 HttpModules를 제거하고 세션 상태를 비활성화하는 것을 포함하는 매우 가벼운 ASP.NET MVC 사이트를 갖고 싶습니다. 그러나 이렇게하려고하면 다음과 같은 오류가 발생합니다.
The SessionStateTempDataProvider requires SessionState to be enabled.
web.config에서 세션 상태를 비활성화했습니다.
<sessionState mode="Off" />
ASP.NET MVC가 TempData에 세션 상태를 사용한다는 것을 이해하지만 TempData는 필요하지 않습니다. 세션 상태를 비활성화하고 싶습니다. 도움!
고유 한 ControllerFactory 및 DummyTempDataProvider를 만들 수 있습니다. 이 같은:
public class NoSessionControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)
{
var controller = base.GetControllerInstance(controllerType);
((Controller) controller).TempDataProvider = new DummyTempDataProvider();
return controller;
}
}
public class DummyTempDataProvider : ITempDataProvider
{
public IDictionary<string, object> LoadTempData(ControllerContext controllerContext)
{
return new Dictionary<string, object>();
}
public void SaveTempData(ControllerContext controllerContext, IDictionary<string, object> values)
{
}
}
그런 다음 앱 시작시 컨트롤러 팩토리를 등록하면됩니다. 예를 들어 global.asax에서이 작업을 수행 할 수 있습니다.
ControllerBuilder.Current.SetControllerFactory(new NoSessionControllerFactory());
특별히 신경 쓰지 않는 한 가지 방법을 찾았습니다.
NoTempDataProvider 만들기
using System;
using System.Collections.Generic;
using System.Web.Mvc;
namespace Facebook.Sites.Desktop.Auth.Models
{
public class NoTempDataProvider : ITempDataProvider
{
#region [ ITempDataProvider Members ]
public IDictionary<String, Object> LoadTempData(ControllerContext controllerContext)
{
return new Dictionary<String, Object>();
}
public void SaveTempData(ControllerContext controllerContext, IDictionary<String, Object> values) { }
#endregion
}
}
컨트롤러에서 공급자를 수동으로 덮어 쓰기
public class AuthController : Controller
{
public AuthController()
{
this.TempDataProvider = new NoTempDataProvider();
}
}
I would greatly prefer a way to do this completely via the configuration, but this works for now.
If you need to use TempData for simple strings, you can use the CookieTempDataProvider in MvcFutures http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471.
According to Brad Wilson, this has been fixed in MVC 2 Preview 1. See here and here.
참고URL : https://stackoverflow.com/questions/884852/how-can-i-disable-session-state-in-asp-net-mvc
'Program Tip' 카테고리의 다른 글
Google-Analytics에서 Firebase-Analytics로 이동하는 방법은 무엇입니까? (0) | 2020.10.17 |
---|---|
svn : externals를 시작하는 방법은 무엇입니까? (0) | 2020.10.17 |
비 활동에서 startActivityForResult 사용 (0) | 2020.10.17 |
특정 github 지점에서 코드 검색 (0) | 2020.10.17 |
Eclipse 콘솔에서 백 스페이스 \ b를 작동시키는 방법은 무엇입니까? (0) | 2020.10.17 |