Website-Anmeldung mit C# verbinden mit vorhandenen sql-server-db

Ich bin ein Marken-Neuling...

Ich bin versucht, melden Sie sich auf meiner website in VS2010, die eine Verbindung zu einem vorhandenen SQL-Server 2008 Express-Datenbank durch asp.net ist, unter Verwendung von C# als code behind.

Hier mein login.aspx.cs code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Net.Mail;
using System.Data.SqlClient;
using System.Web.Configuration;

public partial class Login : BasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void btnlogin_Click(object sender, EventArgs e)
    {
        int Results = 0;

        if (txtUsername.Text != string.Empty && txtPassword.Text != string.Empty)
        {

            Results = Validate_Login(txtUsername.Text.Trim(), txtPassword.Text.Trim());

            if (Results == 1)
            {
                lblMessage.Text = "Login is Good, Send user to another page or enable controls.";
            }
            else
            {
                lblMessage.Text = "Username or Password is incorrect.";
                lblMessage.ForeColor = System.Drawing.Color.Red;
            }
        }
        else
        {
            lblMessage.Text = "Please make sure that your username and password is correct.";
        }
    }

    protected int Validate_Login(String Username, String Password)
    {
        SqlConnection con = new SqlConnection(@"Server=MARIOM-PC\SQLEXPRESS;Database=Logon");

        SqlCommand cmdselect = new SqlCommand();

        cmdselect.CommandType = System.Data.CommandType.StoredProcedure;

        cmdselect.CommandText = "[dbo].[prcLoginv]";

        cmdselect.Parameters.Add("@Username", System.Data.SqlDbType.VarChar, 50).Value = Username;
        cmdselect.Parameters.Add("@Password", System.Data.SqlDbType.VarChar, 50).Value = Password;
        cmdselect.Parameters.Add("@OutRes", System.Data.SqlDbType.Int, 4);
        cmdselect.Parameters["@OutRes"].Direction = System.Data.ParameterDirection.Output;

        cmdselect.Connection = con;

        int Results = 0;

        try
        {
            con.Open();

            cmdselect.ExecuteNonQuery();

            Results = (int)cmdselect.Parameters["@OutRes"].Value;
        }
        catch (SqlException ex)
        {
            lblMessage.Text = ex.Message;
        }
        finally
        {
            cmdselect.Dispose();

            if (con != null)
            {
                con.Close();
            }
        }

        return Results;
    }
}

Wenn ich auf meine Schaltfläche Anmelden, es dauert mir zu meinem C# - code, hinter dem sollten Sie eine Iteration durch die btn_Login_Click, dann die Validate_Login Methode. Aber dann ist es nicht richtig aktualisiert, meine login-Seite mit den richtigen Informationen. Bekomme ich immer "Falsches Passwort" - Fehler.

Bitte um Hilfe!!

Haben Sie ging durch den code im debug-Modus? Was ist der Wert von Results wenn man Sie zurück? Was ist dein PROC tut im hintergrund?
Nehmen Sie Ihre Ratschläge, die ich ausgetestet und trat durch meine code Zeile für Zeile. Der Wert der Ergebnisse ist 0, wenn der korrekte Benutzername und Passwort eingegeben werden. Meine gespeicherten Prozedur sollte Messerstecherei durch die eingegebenen Informationen, um zu sehen, ob Benutzername und Passwort übereinstimmen und wenn outres auf 1 gesetzt ist. Outres = Ergebnisse = 0 an dieser Stelle.
Also ist es entweder ein problem mit der gespeicherten Prozedur, oder etwas ist schief gegangen ADO.Net so, dass es nicht immer den richtigen Wert zurück. Der code, den Sie gepostet hast sieht aber gut aus.

InformationsquelleAutor edmarcstuff | 2012-12-01

Schreibe einen Kommentar