простая страница входа в asp.net - PullRequest
0 голосов
/ 25 января 2011

Мне нужно было создать простую форму быстрого входа для внутреннего проекта компании, над которой я работаю. Я видел этот параграф о том, как сделать это с помощью vb - выглядел очень быстро и легко. Я запустил его через конвертер, чтобы изменить его на C #, но когда я загружаю страницу, я получаю сообщение об ошибке:

CS0103: The name 'Session' does not exist in the current context

Со следующим кодом:

<script runat="server">
    public void Login(object s, EventArgs e)
    {
        if (tbUserName.Text == "admin" & tbPassword.Text == "admin")
        {
            Session("Admin") = true;
            Response.Redirect("Dashboard.aspx");
        }
        else
        {
            Session("Admin") = false;
            litLogin.Visible = true;
            litLogin.Text = "<p>Sorry you have provided incorrect login details.</p>";

        }
    }
</script>

РЕДАКТИРОВАТЬ Добавление скобок помогает на странице входа в систему, но на странице, которую я пытаюсь защитить, вы должны проверить сеанс следующим образом:

    <form id="form1" runat="server">
<script runat="server">
    protected void Page_Load(object sender, System.EventArgs e)
    {
        if (Session["Admin"] != true)
        {
            Response.Redirect("Login.aspx");
        }
    }

</script>

И это бросает CS0019: Operator '!=' cannot be applied to operands of type 'object' and 'bool'

Ответы [ 2 ]

3 голосов
/ 25 января 2011

В C # вам необходимо использовать [ и ] для индексаторов.

Другими словами, заменить

Session("Admin")

на

Session["Admin"]

В ответ на ваше редактирование :

if (Session["Admin"] != true)

Должен быть приведен к типу bool, поэтому вы должны попробовать:

if (!(bool)Session["Admin"]) 

(Нет необходимости сравнивать логическое значение систина / ложь)

2 голосов
/ 25 января 2011

Попробуйте заменить:

Session("Admin")

с:

Session["Admin"]

В C # скобки используются для доступа к индексированным свойствам , в противном случае это выглядит как вызов метода, и компилятор жалуется, что нет метода с именем Session.

На странице, которая проверяет сеанс, вам нужно привести к логическому значению, потому что Session["Admin"] возвращает объект, который не сопоставим с логическим значением true:

if (!(bool)Session["Admin"])
{
    Response.Redirect("Login.aspx");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...