Получить идентификатор пользователя и проанализировать в переменной сеанса C # - PullRequest
1 голос
/ 28 ноября 2011

Я работаю над проектом asp.net, в котором я пытаюсь вернуть идентификатор пользователя текущего пользователя, вошедшего в систему.Я написал имя пользователя в C #, поскольку я * не могу использовать встроенный элемент управления asp из-за других ограничений.Я хочу получить идентификатор пользователя из удаленной базы данных SQL, а затем использовать его в качестве переменной для другой функции.Это так, я могу назначить ID пользователя для анкеты, которая создается в функции ниже.Я попытался использовать membership.getUser, но безуспешно.

РЕДАКТИРОВАТЬ: Когда я запускаю проект, я получаю ошибку "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

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 28 ноября 2011

Проверка 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...