Вот как мне нужно создать пользователя в моей базе данных, вы увидите его с ошибкой во время выполнения, и оно появляется только при нажатии кнопки.Ошибка выполнения после нажатия кнопки
проблемы появляются только при нажатии кнопки на странице.
Здесь мы имеем C# код из opretbruger.aspx.cs
protected void ButtonOpretbruger_Click(object sender, EventArgs e)
{
string fejl = "Hov Hov, Du skal læse vore betingelser";
if (CheckBoxBetingelser.Checked)
{
LabelError.Visible = false;
cmd.Connection = conn;
string brugernavn = System.Globalization.CultureInfo.CurrentUICulture.TextInfo.ToTitleCase(TextBoxBrugernavn.Text);
cmd.CommandText = "SELECT Id, brugernavn, rank FROM brugere WHERE brugernavn = @brugernavn";
cmd.Parameters.AddWithValue("@brugernavn", brugernavn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
LabelErrorBesked.Text = "Hov hov, denne her email er optaget " + brugernavn;
}
else
{
conn.Close();
cmd.Connection = conn;
//ligger noget sikkert på password
string brugernavn1 = System.Globalization.CultureInfo.CurrentUICulture.TextInfo.ToTitleCase(TextBoxBrugernavn.Text);
string adgangskode = Hash.getHashSha256(TextBoxAdgangskode.Text);
string fornavn = TextBoxFornavn.Text;
string efternavn = TextBoxEfternavn.Text;
cmd.CommandText = @"INSERT INTO brugere (brugernavn, adgangskode, fornavn, efternavn)
VALUES (@brugernavn, @adgangskode, @fornavn, @efternavn);";
cmd.Parameters.AddWithValue("@brugernavn", brugernavn1);
cmd.Parameters.AddWithValue("@adgangskode", adgangskode);
cmd.Parameters.AddWithValue("@fornavn", fornavn);
cmd.Parameters.AddWithValue("@efternavn", efternavn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
Response.Redirect("login.aspx");
}
}
else
{
LabelError.Text = fejl;
}
}
здесь мы HTML от opretbruger.aspx
<asp:Button ID="ButtonOpretbruger" runat="server" CssClass="btn pi-btn-base pi-btn-wide pi-weight-600" OnClick="ButtonOpretbruger_Click" ValidationGroup="opretbruger" />
Проблема заключается в том, что появляется здесь печатал это:
Ошибка сервера в приложении «/».
Ошибка
Описание: Произошла ошибка приложения на сервере. Текущие настройки для этого приложения не позволяют удаленно просматривать информацию об ошибке приложения (по соображениям безопасности). Его можно, однако, просматривать браузерами, запущенными на локальном сервере .
Детали: Чтобы включить подробности этого конкретного сообщения об ошибке, чтобы быть для просмотра на удаленных машинах, пожалуйста, создайте тег в в «web.config» файл конфигурации, расположенный в корневом каталоге текущего веб-приложения . Затем этот тег должен иметь свой атрибут «режим» , установленный на «Выкл.».
<configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration>
Примечание: Текущая страницу ошибки вы видите можно заменить на странице ошибки пользовательской модификация «defaultRedirect» атрибут конфигурации тега приложения к точке на пользовательской страницы ошибок URL.
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>
в моем web.config выглядит следующим образом:
<system.web>
<compilation targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<globalization uiCulture="en-US" />
<!--<globalization uiCulture="da" culture="da-DK" />-->
</system.web>
Eidt UPDATE
protected void ButtonOpretbruger_Click(object sender, EventArgs e)
{
string fejl = "Hov Hov, Du skal læse vore betingelser";
if (CheckBoxBetingelser.Checked)
{
LabelError.Visible = false;
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
string brugernavn = System.Globalization.CultureInfo.CurrentUICulture.TextInfo.ToTitleCase(TextBoxBrugernavn.Text);
cmd.CommandText = "SELECT Id, brugernavn, rank FROM brugere WHERE brugernavn = @brugernavn";
cmd.Parameters.AddWithValue("@brugernavn", brugernavn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
LabelErrorBesked.Text = "Hov hov, denne her email er optaget " + brugernavn;
}
else
{
conn.Close();
SqlConnection conn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = conn;
string adgangskode = Hash.getHashSha256(TextBoxAdgangskode.Text);
string fornavn = TextBoxFornavn.Text;
string efternavn = TextBoxEfternavn.Text;
cmd1.CommandText = @"INSERT INTO brugere (brugernavn, adgangskode, fornavn, efternavn)
VALUES (@brugernavn, @adgangskode, @fornavn, @efternavn);";
cmd1.Parameters.Add("@brugernavn", brugernavn);
cmd1.Parameters.Add("@adgangskode", adgangskode);
cmd1.Parameters.Add("@fornavn", fornavn);
cmd1.Parameters.Add("@efternavn", efternavn);
conn1.Open();
cmd1.ExecuteNonQuery();
conn1.Close();
Response.Redirect("login.aspx");
}
}
else
{
LabelError.Text = fejl;
}
}
ошибки являются: имя переменной '@brugernavn' уже объявлен. Имена переменных должны быть уникальными в рамках пакета запросов или хранимой процедуры. Должен объявить скалярную переменную "@adgangskode".
Получите страницу с консоли сервера или установите 'mode = Off', чтобы получить полное сообщение об ошибке. Поместите это здесь, и мы увидим. –
@PatrickHofman Где я его добавляю? Должен ли я писать его в web.config ?, Im New on Asp.net & C# –
Да, пожалуйста. Добавьте конфигурационную часть XML в сообщение об ошибке. –