获取用户ID并解析为会话变量c#
本文关键字:会话 变量 用户 ID 获取 | 更新日期: 2023-09-27 18:16:03
我正在一个asp.net项目中工作,我试图返回当前登录使用的用户ID。我已经在c#中编写了用户登录,因为我*不能使用asp内置控件,由于其他限制。我想从远程SQL数据库获取用户ID,然后将其用作另一个函数的变量。这样我就可以将userID分配给在下面的函数中创建的问卷。我试过使用membership.getUser
,但没有运气。
编辑:当我运行项目时,我得到错误"系统。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
任何帮助都将非常感激。
检查Membership.GetUser()
是否返回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
}