2016-09-09 18 views
2

ログインしているときにユーザーがログインしてそのページの上部にユーザー名を表示したい場合は、データベースに最初に私がASP.NETでセッションオブジェクトを使用する方法(Visual Basicを使用)

If (IsPostBack) Then 

      connection.Open() 
      command.Connection = connection 

      command.CommandText = "select count(*) from customer where Email='" & TextEmail.Text & "' AND Password='" & TextPassword.Text.Trim & "'" 
      counts = Convert.ToInt32(command.ExecuteScalar.ToString) ' execute this text as an SQL query 

      If (counts > 0) Then 
       Response.Redirect("Default.aspx", False) 
       Session("Username") = TextEmail.Text 'This is where i try to use the session storing the user's email (which i use as a username) 
      Else 
       Label1.Visible = True 
      End If 

      connection.Close() 
     End If 

コードの上に、彼らはログインボタンをクリックしたときにそれがこの(ボタンイベント)のような何かをし、それらを聞かせて正常に動作し、問題はありません。これはSession ["Username"] = TextEmail.Textのようになります。

これで、最初にログインしなくてもアクセスできないフォームがプロジェクト内にあります。このページが読み込まれたら、ユーザーがログインしているかどうかを確認したい場合は、ログインページにリダイレクトします。ユーザーを受け入れ、「user userEmail」に表示されるラベルを更新します。 、Page_Loadのコードは、このようなものです:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Try 
     If Not (Session("Username") = vbNull) Then 
      LogInStatus.Text = "logged in user " & System.Web.HttpContext.Current.Session("Username").ToString 
     Else 
      Response.Redirect("Login.aspx", False) 
     End If 
    Catch ex As Exception 
     MsgBox(ex.ToString) 
    End Try 
End Sub 

クリックしたときに私はNullにセッションを設定してから、再びログインページにリダイレクトされますログアウト、があります。そう、彼らはログアウト]をクリックしたときにこれは私がコードを実行すると

Session("Username") = vbNull 
     Response.Redirect("Login.aspx", False) 

が、私はどちらか私は、オブジェクトが間違って初期化しています、または私はちょうどそれをまっすぐに間違った方法を使用しています明らかに、このNullReference例外 image here を取得起こります。しかし、これはすべてC#で動作します。助けてください。

+0

Convert.ToString(System.Web.HttpContext.Current.Session ["Username"]) '(これはC#で与えられています)を変換しようとしました。ヌル参照を処理しています – Webruster

+0

@Webruster既に変換されています。私が与えたコードを読み返すと、例外が発生した場所で、ステートメントの最後が..... Session( "Username")で終わることがわかります。ToString' – Ndumiso

+0

.ToStringを使用している場合)これは、オブジェクトがnullの場合にnull参照例外につながります。これは、 'Convert.Tostring'を使用して変換するとこれが処理されるため、前のコメントで参照しています。 – Webruster

答えて

0

問題がある:「ユーザー名」キーが存在しないとき、あなたはセッションから取得した値は、オブジェクト、ないvbNullではありません。その後、Nothing ToStringは例外を発生させます。あなたがNothingに値を設定しSession.Remove(「ユーザ名」)を行うことができます

If Session("Username") IsNot Nothing Then 
    LogInStatus.Text = "logged in user " & Session("Username").ToString 
Else 
    Response.Redirect("Login.aspx", False) 
End If 

よりもむしろvbNullを割り当てる:これを試してみてください。

+0

ありがとうございます。これは働いた – Ndumiso

関連する問題