1
Web APIの非mvcアプリケーションでセッション変数を使用しようとしています。web apiのセッション状態変数の使用
私は私のコントローラで今
protected void Application_PostAuthorizeRequest()
{
HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
}
として
public class AuthenticateController : ApiController
{
[Route("api/CheckLogin")]
public string AuthenticateUser(Models.Customer customer)
{
HttpContextBase context = null;
var httpContext = context as HttpContextBase;
httpContext.Session["username"] = "sa";
}
をglobal.aspxページでセッションを有効にしている。しかし、私がnull参照エラーを取得しています。
どのように私はこの
を達成することができますcontext
がnull
に設定されている
「コンテキスト」という名前の変数を作成し、それを 'null'と等しく設定し、null値を' HttpContextBase'としてキャストしてから、それを使ってみましょう? ある時点で、現在のコンテキストと同じに設定するか、少なくともnull以外の値に設定する必要があります。私。 'context = HttpContext.Current;' – TheRotag
'HttpContextBase context = null;'行は必要ありません。そして、それを使用する前にhttpContextがnullでないことを確認する必要があります。キャストしようとしているオブジェクトの型がHttpContextBaseではない場合、 'as'はnullを返します。その後、セッションでユーザー名が正しく設定されていることを確認する必要があります。 Sessionオブジェクトからの取得時にnull値をチェックして、それをデバッグします。 – ManoDestra
私はこのオブジェクトのコンテキストが好きでした。 if(Request.Properties.TryGetValue( "MS_HttpContext"、コンテキスト外)) { var httpContext = context as HttpContextBase; if(httpContext!= null && httpContext.Session!= null) { httpContext.Session ["d"] = "sa"; } } – user2363957