2016-04-19 8 views
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参照エラーを取得しています。

どのように私はこの

を達成することができますcontextnullに設定されている

+0

「コンテキスト」という名前の変数を作成し、それを 'null'と等しく設定し、null値を' HttpContextBase'としてキャストしてから、それを使ってみましょう? ある時点で、現在のコンテキストと同じに設定するか、少なくともnull以外の値に設定する必要があります。私。 'context = HttpContext.Current;' – TheRotag

+0

'HttpContextBase context = null;'行は必要ありません。そして、それを使用する前にhttpContextがnullでないことを確認する必要があります。キャストしようとしているオブジェクトの型がHttpContextBaseではない場合、 'as'はnullを返します。その後、セッションでユーザー名が正しく設定されていることを確認する必要があります。 Sessionオブジェクトからの取得時にnull値をチェックして、それをデバッグします。 – ManoDestra

+0

私はこのオブジェクトのコンテキストが好きでした。 if(Request.Properties.TryGetValue( "MS_HttpContext"、コンテキスト外)) { var httpContext = context as HttpContextBase; if(httpContext!= null && httpContext.Session!= null) { httpContext.Session ["d"] = "sa"; } } – user2363957

答えて

-1

まあ役立てください。だから基本的に実行しているnull.Session["username"]!しかし、なぜこの実装でセッションが必要ですか?これはRESTサービスの権利ですか?それは無国籍であるはずです。 Link

関連する問題