Request
、Response
というプロパティのSystem.Web.Mvc.Controller
クラスを使用して、HTTPリクエストとレスポンスのクッキーを設定して読みたいとします。その理由は、要求から読み込んでヘルパークラスのデータを生成するユーティリティクラスを書く必要がなくなるからです。カスタムベースコントローラー(そのすべてのコントローラーが派生したもの)でこのようなコードをすべてプッシュすることができます。ASP.NET MVCでController.Requestを設定する方法
だから、私は `BaseController」に次のコード
if (Request != null)
{
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
HttpContext.User = new GenericPrincipal(new GenericIdentity(authCookie.Value), null);
Thread.CurrentPrincipal = HttpContext.User;
}
}
を持っているが、Request
は常にnullです。これはどのように埋め込まれていますか?
私は実際に自分のコードを 'Initiaze'メソッドに入れました。私も 'MyAuthorizeAttribute'を持っています。私の問題は嘲笑です。私があなたのアプローチで行くなら、私は 'HttpContextBase'を模倣し、それを依存関係として注入する必要があります(私はMoqとStructureMapを使用しています)。私はそれが特に難しいと感じています。 'Controller.HttpContext'や' Controller.Request'を使うと、コントローラ上でこれらのプロパティを簡単に模擬することができます。 – Suhas
@ Suhas、 'HttpContextBase'は引数として' AuthorizeCore'メソッドに渡されます。だからユニットテストでやる必要があるのは、それを嘲笑して渡すことだけです。 –