独自の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());
いいアイデア - これについて他の問題が発生した場合や、最終的にどのように軽量化できたかについて聞いてみたいと思います。 –
スティーブの変更を実装した後、私はもっと実験をしませんでしたが、かなりのオーバーヘッドがありました。最も速いのは、IHttpHandlerの実装で、ASP.NETが動作するようになったことです。詳細は私の答えを見てください:http://stackoverflow.com/questions/509978/something-faster-than-httphandlers/510001#510001 –
これはMVC 2で修正されています。あなたが実際に一時データを読み書きしようとしない限り投げません。 –