2011-11-28 17 views
1
を解析します。

現在ログインしているユーザーのユーザーIDを返そうとしているasp.netプロジェクトで作業しています。私はC#でユーザーログインを書いているので、他の制約のためにのasp組み込みコントロールを使用できません。 リモートSQLデータベースからユーザーIDを取得し、それを別の関数の変数として使用したいとします。これは、以下の関数で作成されているアンケートにuserIDを割り当てることができるようにするためです。私はmembership.getUserを使用しようとしましたが、運がありません。ユーザーIDを取得し、セッション変数C#

編集:プロジェクトを実行するとエラー"System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。" string UserID = membershipUser.ProviderUserKey.ToString()

new_questionnaire.aspx.cs(短縮)

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Web.Security; 
using Questionnaire; 

    public partial class new_questionnaire : System.Web.UI.Page 
    { 
     OsqarSQL sendData; 

      protected void NewQnrButton_Click(object sender, EventArgs e) 
      { 
       // Check if the input fields are empty. 
       if (QuestionnaireName.Text == "" || CustomerID.Text == "" || NumberOfQuest.Text == "") 
       { 
        lblError.Text = "Input fields cannot be blank"; 
       } 
       // Parse input values to OscarSQL. 
       else 
       { 
        MembershipUser membershipUser = Membership.GetUser(); 
        string userID = membershipUser.ProviderUserKey.ToString(); 
        int testRet = sendData.InsertQuestionnaire(QuestionnaireName.Text, Int32.Parse(userID), Int32.Parse(NumberOfQuest.Text)); 
        Session["QuestionnaireID"] = testRet; 
        Session["QuestionnaireName"] = QuestionnaireName.Text; 
        Response.Redirect("~/buildq/add_questions.aspx"); 
       } 

      } // End NewQNRButton_Click 

     } // End new_questionnaire 

で指しているすべてのヘルプははるかに高く評価されるだろう。

+2

エラーが発生しますか?何が効いていないのですか?あなたはより具体的にする必要があります –

+0

@leppie:ok、私の母国語ではありません。それ以外に、Jakubはすでにそれを求めています:) – Jan

+0

@Jan:問題ありません:) – leppie

答えて

2

チェックMembership.GetUser()は返されません。nullユーザーです。返されるユーザオブジェクトがnullの場合、ログインしているユーザがないことを意味します。ログインページにリダイレクトしてユーザーを認証する必要があります。

ProviderUserKeyは整数ではなくGUIDで、整数に変換することはできません。

MembershipUser membershipUser = Membership.GetUser(); 
if(null != membershipUser) 
{ 
    int userId; 
    if(int.TryParse(membershipUser.ProviderUserKey.ToString(), out userId) 
    { 
     int testRet = sendData.InsertQuestionnaire(QuestionnaireName.Text, userId, Int32.Parse(NumberOfQuest.Text)); 
     Session["QuestionnaireID"] = testRet; 
     Session["QuestionnaireName"] = QuestionnaireName.Text; 
     Response.Redirect("~/buildq/add_questions.aspx"); 
    } 

}else 
{ 
    // user may not login , redirrect to login page 
} 
+0

遅れて申し訳ありません。このプロジェクトは数週間にわたり停止されました。 私はあなたのソリューションを実装しようとしましたが、2番目のif文が失敗し、ユーザをログインページに戻すように見えます。 ブレイクポイントは、ステートメント 'if(null!= membershipUser)'に失敗したことを示しますが、ユーザーはログインしています。 何がうまくいかない可能性がありますか? ありがとう – HGomez90

関連する問題