0

ASP.NET MVC 2 アプリケーションのコントローラーでユーザー固有のデータにアクセスする必要があります。私のコントローラ クラスには 2 つのコントローラ メソッドがあります。

[ControllerSessionState(ControllerSessionState.ReadOnly)]
public class CalendarController : BasicController
{
    [Authorize]
    public ActionResult ControllerMethod1()
    {
       //reads session specific data
    }

    [Authorize]
    public ActionResult ControllerMethod1()
    {
       //stores session specific data
    }
}

つまり、ControllerMethod1 は ControllerMethod2 と並行して実行できる必要があります。このため、セッションをReadOnlyとしてマークしました。ただし、ControllerMethod2 は「セッション」にデータを書き込む必要があります。これは許可されていないため、HttpContext.Application にデータを格納することを考えています。たとえば、次のように、オブジェクトの名前にユーザー ID をエンコードできます。

 HttpContext.Application["Data" + currentUser.UserId] = <<my_data>>;

このようにできますか?このアプローチには欠点がありますか?

4

1 に答える 1

1

ControllerSessionState.ReadOnly明らかにセッション ストアに書き込む必要があるコントローラーには指定しないでください。

代わりに、別の方法で並行性の問題に対処してみてください (たとえば、適切なロック メカニズムを使用するなど)。

また、同じユーザーが両方のメソッドにまったく同時にアクセスする可能性について考えてみてください。これらの可能性は非常に低いため、このシナリオでは同時実行性について考える価値はないと思います。

于 2012-10-13T20:04:05.187 に答える