Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Новая проблемка,соеденение с DB. / 25 сообщений из 27, страница 1 из 2
07.12.2005, 23:36
    #33423707
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
Новая проблемка,соеденение с DB.
Имею такой вот код ,но почемуто вылетает на ошибке:
System.ArgumentExeption.Redirect URI cannot contain newline characters.
Kod:
private void btnSubmit_Click(object sender, System.EventArgs e)
{
dbconnectUser = new SqlConnection("workstation id=HOME-630FDA66BC;integrated security=true;data source=HOME-630FDA66BC;initial catalog=SourceCodeP2P");
SqlCommand cm = new SqlCommand("FindUser",dbconnectUser);
int n;

//Open connect
try
{
dbconnectUser.Open();
}
catch(SqlException ex)
{
Response.Redirect(ex.Message);
return;
}

cm.CommandType = CommandType.StoredProcedure;
//Parameter user
SqlParameter paramName = new SqlParameter("@userName",SqlDbType.NVarChar,50);
paramName.Value = txtUserName.Text.ToLower();
cm.Parameters.Add(paramName);

//Parameter password
SqlParameter paramPassword = new SqlParameter("@password",SqlDbType.NVarChar,50);
paramPassword.Value = txtPassword;
cm.Parameters.Add(paramPassword);

n = System.Convert.ToInt32(cm.ExecuteScalar());

if(n>0)
{
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text.ToLower(),false);
}
else
{
spnNote.Visible = true;
}
dbconnectUser.Close();
...
Рейтинг: 0 / 0
08.12.2005, 01:05
    #33423756
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
A mojet eto chtoto v file Web.config nujno chtoto izmenit.Podskajite plizzzzzz.
Zaranie spasibo!!!
...
Рейтинг: 0 / 0
08.12.2005, 06:07
    #33423832
Hustler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
"Redirect URI cannot contain newline characters"
Response.Redirect(ex.Message);

редирект на описание ошибки.. мощно =)
...
Рейтинг: 0 / 0
08.12.2005, 15:46
    #33425451
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
Nu i chto eto znachit ,chto s etim delat???
Zaranie spasibo!!!
...
Рейтинг: 0 / 0
08.12.2005, 16:29
    #33425579
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
заменить Response.Redirect(ex.Message);
на Response.Write(ex.Message);

и сюда, что напишет

с уважением...
...
Рейтинг: 0 / 0
08.12.2005, 18:26
    #33425885
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
Спасибо Sam Andrews.Теперь вышла ошибка что неможет открыть DB для user ...\ASPNET.Подскажи пожалуста как мне добабить етого зверя.
Большое спасибо!!!
...
Рейтинг: 0 / 0
08.12.2005, 18:37
    #33425909
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
ASPNET добавить довольно трудно, ибо его пароль по умолчанию неуловим
лучше создать учетную запись на сервере БД, и в строке подключения заменить integrated security=true на uid=тутимя pwd=тутпароль

по секрету: (если у тебя для учебы все это, и сервер БД твой локальный, то можно просто использовать учетную запись sa, но больше так никогда не делай =)))

ЗЫ: есть еще масса вариантов, через имперсонизацию и прочее, можно посмотреть в мсдне...

с уважением...
...
Рейтинг: 0 / 0
08.12.2005, 18:58
    #33425949
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
Спасибо Sam Andrews.
Да ты правильно говориш весь проект у меня на компе,я сделал как ты сказал сделал подключение с user id=sa.Вроде все прошло как надо,но теперь вылетело на остроке:
n=System.Convert.ToInt32(cm.ExecuteScalar());
чтото не так Помоги пожалусто.
Зарание спасибо!!!
...
Рейтинг: 0 / 0
08.12.2005, 19:24
    #33426009
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
надо смотреть что делает хранимая процедура FindUser

ExecuteScalar - выполняет запрос и возвращает первый столбец первой строки выборки, видимо туда попадает строковое значение, которое не может быть приведено к инту...

с уважением...
...
Рейтинг: 0 / 0
08.12.2005, 19:32
    #33426026
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
FindUser делает ето:

CREATE PROCEDURE FindUser
@Name nvarchar(50),
@Password nvarchar(50)
AS
SELECT COUNT(ID) FROM Users
WHERE UserName = @Name AND Password = @Password

GO

вроде все должно работать но непойму в чем загвостка???
Подскажи направь на правильный путь.
Зарание благодарю!!!
...
Рейтинг: 0 / 0
08.12.2005, 19:38
    #33426040
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
какой текст ошибки?
возможно проблема в самом запросе хранимки

с уважением...
...
Рейтинг: 0 / 0
08.12.2005, 20:15
    #33426082
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
Text:

System.InvalidCastExeption: Object must impement IConvertible
с уважением...
...
Рейтинг: 0 / 0
08.12.2005, 22:45
    #33426197
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
Ну где же ты Sam Andrews выручай горю.
Запание спасибо!!!
...
Рейтинг: 0 / 0
08.12.2005, 23:07
    #33426213
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
авторn=System.Convert.ToInt32(cm.ExecuteScalar());

Во первых, я бы проверил, что возвращает простой запрос (без всяких конвертаций) - cm.ExecuteScalar() - хотя, может это из разряда высшей математики - в данном конкретном случае ;) Есть варианты значений - ничего, какое-то строковое значение, DBNull and etc.
Вообще не догоняю, к чему эта конвертация - типо для солидности, что ли!!!???

To Sam Andrews
авторASPNET добавить довольно трудно, ибо его пароль по умолчанию неуловим
лучше создать учетную запись на сервере БД, и в строке подключения заменить integrated security=true на uid=тутимя pwd=тутпароль

Без комментариев ;) Весёлая шутка - ASPNET - это тот пользователь, который просто по определению не может быть прописан в SQL!!!??? - хотя, я всегда думал (да и практика показывает) на оборот!!!
...
Рейтинг: 0 / 0
08.12.2005, 23:28
    #33426228
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
Попробовал и так :
cm.ExecuteScalar();
и так :
n=((int)cm.ExecuteScalar());
и всеравно вылетает на етой строке(блин)
Зарание спасибо!!!
...
Рейтинг: 0 / 0
08.12.2005, 23:35
    #33426232
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
теперь попробуй
object obj = cm.ExecuteScalar();
и посмотри что будет в obj
когда книжки читать начнем?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
08.12.2005, 23:37
    #33426234
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
одна из умных книг ;)
Проверка пользователей с помощью базы данных
Как вам уже известно, для аутентификации пользователей с помощью файла Web.coring необходим метод Authenticate. Если же вы применяете аутентификацию с помощью БД, вам придется самостоятельно написать код для поиска учетных данных в БД и сравнения их с данными, введенными пользователем на форме. Прежде чем аутентифицировать клиента и предоставить ему доступ к приложению, следующий обработчик события вызывает вспомогательную функцию CheckPassword, чтобы проверить значения полей для ввода имени и пароля пользователя:
Visual Basic .NET
Private Sub butSignOn_Click(ByVal sender As System. Object, ByVal e As System. EventArgs) Handles butSignOn.Click
'Если имя и пароль пользователя найдены, авторизировать пользователя и показать начальную страницу приложения.
If CheckPassword(txtUserName.Text, txtPassword.Text) Then
FormsAuthentication.RedirectFromLoginPage (txtUserName.Text, True)
Else
'Отобразить сообщение.
spnNote.InnerText - "User or password not found. Try again."
'Дать пользователю три попытки входа.
ViewState("tries") = ViewState("tries") + 1
If ViewStateC("tries") > 3 Then
Response. Redirect ("Denied. htm")
End If
End If
End Sub
Вспомогательная функция CheckPassword (см. код ниже) шифрует введенный пароль, ищет в БД запись с таким же именем пользователя и сравнивает зашифрованный пароль с паролем из найденной в БД записи. Обращение к БД производится в блоке обработки исключений, чтобы пользователь не увидел сообщения об ошибках, возникающие при конфликтах из-за блокировки БД.
Visual Baste .NET
Private Function CheckPassword(ByVal UserName As String, ByVal Password As String) As Boolean
'Объявить переменную, отслеживающую состояние операции.
Dim bSuccess As Boolean
'Зашифровать пароль.
Password = FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "SHA1")
'Создать команду для извлечения строки с заданным значением UserName.
Dim oleCommand As New OleDbCommand ("SELECT * FROM Users" + _
" WHERE UserName='" + UserName + "'", oledbUsers)
'Следить за ошибками при обращении к БД
Try
'Открыть соединение с БД.
oledbUsers.Ореn()
'Найти запись.
Dim rdrUsers As OleDbDataReader = oleCommand.ExecuteReader()
rdrUsers. Read()
If Password = rdrUsers.Item("Password") Then bSuccess = True
End While
'Закрыть соединение.
oledbUsers.Close()
Catch
' Если запись не найдена, считать операцию неудачной.
bSuccess = False
' Закрыть соединение.
oledbUsers.Close()
End Try
Return bSuccess
End Function

P.S. to автор топика - может перед тем как идти в наступление, почитать книги? Пока писал пост - уже опередили с пожеланием
...
Рейтинг: 0 / 0
09.12.2005, 00:19
    #33426258
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
To profil:
object obj = cm.ExecuteScalar();выдает туже ошибку.

To vladgrid:Здраствуй уважаемый!!!
Дак книги я читал и продолжаыу читать,без книг никак нельзя.Только в деле невсегда получаетса как в книгах.Короче ближе к делу,имеетса вот такой код:
login.aspx.cs:
// Authenticate username/password
if(CheckPassword(txtUserName.Text.ToLower(),txtPassword.Text.ToLower()))
// If found, display the application's Start page.
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text,true);
else
{
// Otherwise, clear the password.
txtPassword.Text = "";
// Display message.
spnNote.InnerText = "User name or password not found.Please, Try again.";
// If third try, display "Access Denied" page.
if (System.Convert.ToInt32(ViewState["Tries"]) > 1)
Response.Redirect("Denied.htm");
else
{
// Otherwise, increment number of tries.
ViewState["Tries"] = System.Convert.ToInt32(ViewState["Tries"]) + 1;
if (System.Convert.ToInt32(ViewState["Tries"]) > 3)
Response.Redirect("Denied.htm");
}
}

}

private void btnClier_Click(object sender, System.EventArgs e)
{
this.txtPassword.Text = "";
this.txtUserName.Text = "";
}

private void btnNewUser_Click(object sender, System.EventArgs e
{
if (AddUser(txtUserName.Text.ToLower(), txtPassword.Text.ToLower()))
spnNote.InnerText = "User added.";
else
spnNote.InnerText = "User exists. Choose a different user name.";
}
private bool AddUser(string userName, string password)
{
// Declare variable to track success/failure.
bool bSuccess = false;
// Encrypt the password.
password = FormsAuthentication.HashPasswordForStoringInConfigFile(password,"SHA1");
// Create command to insert user name and password.
SqlCommand sqlCommand = new SqlCommand("INSERT INTO Users" +
" VALUES('" + userName + "', '" + password + "')", dbconnectUser);
// Catch errors in case record already exists.
try
{
// Open the database connection.
dbconnectUser.Open();
// If record added, set success to true.
if (sqlCommand.ExecuteNonQuery()!= 0)
{
bSuccess = true;
// Close connection.
dbconnectUser.Close();
}
}
catch
{
// Otherwise, success if false.
bSuccess = false;
// Close connection.
dbconnectUser.Close();
}
// Return success/failure.
return bSuccess;
}

private bool CheckPassword(string userName, string password)
{
// Declare variable to track success/failure.
bool bSuccess = false;
// Encrypt the password.
password = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "SHA1");
// Create command to get row from users table based on UserName.
SqlCommand sqlCommand = new SqlCommand("SELECT * FROM Users" +
" WHERE userName='" + txtUserName.Text + "'", dbconnectUser);
// Check for errors using database
try
{
// Open the database connection.
dbconnectUser.Open();
// Get the author ID.
SqlDataReader drUsers = sqlCommand.ExecuteReader();
while (drUsers.Read())
{
if (password == drUsers["password"].ToString())
bSuccess = true;
}
// Close connection.
dbconnectUser.Close();
}
catch
{
// Otherwise set failure.
bSuccess = false;
// Close connection.
dbconnectUser.Close();
}
return bSuccess;
}
}

}
i
Web.coonfig:
<authentication mode="Forms" >
<forms name="P2PforDevelopers" loginUrl="login.aspx"
protection="All" />
</authentication>

<authorization>
<deny users="?" />
</authorization>

При вводе данных,при назгатие на Submit выдает ошибку на форме:User Name or Password not found.Please,Try again.
А при нажатие на NewUser вылетает на ошибке в коде на етой строке:
dbconnectUser.Close();(text:Object reference not set to an instance of an object)
Так что выручайте друзья вся надежда на вас.
Зарание благодарю!!!
...
Рейтинг: 0 / 0
09.12.2005, 00:58
    #33426276
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
На нас надейся, а сам не плошай... ;) - книги у тебя немного стрёмные, судя по примерам (особенно вот это - txtUserName.Text.ToLower(), txtPassword.Text.ToLower())
Теперь к делу (долго объяснять ничего не стану - и так много написано - просто делай по предложенной схеме)
web.config
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<authentication mode="Forms">
		<forms loginUrl="LogIn.aspx" path="/">
			<credentials passwordFormat="SHA1">
								
			</credentials>
		</forms>
</authentication>

<authorization>
                <deny users = "?" />
</authorization>
Login.aspx
здесь код выписывать не стану - просто объясню логику:
если проходим успешно нашу процедуру проверки наличия пользователя - CheckPassword - то редиректим на закрытую страницу, иначе, пишем, что пользователь не найден.
теперь сама процедура проверки - CheckPassword:
собственно, она неплохо закоментирована в строках из книги - единственное, что могу добавить от себя - нехватает объявленной переменной oledbUsers (строка подключения к БД) - но, этот вопрос вы уже решили раньше насколько я понимаю.
P.S. всё должно получиться - есть такая беда как точки остонова выполнения кода (BreakPoint) - довольно мощное оружие в умелых руках (не стесняйся их использовать) - можно пройти весь код в Debug построчно и посмотреть за ходом выполнения кода, наличием переменных and etc. Желаю удачи!!!
...
Рейтинг: 0 / 0
09.12.2005, 01:15
    #33426283
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
Добавил строку как ты сказал:
<authentication mode="Forms" >
<forms name="P2PforDevelopers" loginUrl="login.aspx" path="/" protection="All">

<credentials passwordFormat="SHA1"></credentials>
</forms>
</authentication>

<authorization>
<deny users="?" />
</authorization>


но всеравно вылетает на той же ошибке.
Выручай друг,загибаюсь.
Зарание благодарю!!!
...
Рейтинг: 0 / 0
09.12.2005, 01:36
    #33426287
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
авторВыручай друг,загибаюсь.
Зарание благодарю!!!
Сказать больше, чем здесь уже сказано - не в силах ни один человек...
Я вот, например, не умею петь (от рождения не дано) - представь, не страдаю от этого...
Тебе не дано охватить необъятное - предлагаю тоже не расстраиваться...
P.S. Помощь (на мой взгляд) можно оказать, но только написав код за тебя и для тебя - а для этого нужно сидеть за твоим компом - задача не лёгкая, но осуществимая (при наличии RemoteAssistance) - если справишься с этим условием - ЧЕСТНО обещаю помочь.
...
Рейтинг: 0 / 0
09.12.2005, 01:40
    #33426289
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
вот здесь я обитаю (обрати внимание на связь online)
...
Рейтинг: 0 / 0
09.12.2005, 02:01
    #33426297
Sharki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
Спасибо тебе vladgrid но знаеш я несильно както переживаю,просто немного обидно,вроде и код рабочий а неработает,точьно тебе говорю дело все как всегда в какойто мелочи(так всегда бывает).А за помощ большое всем и тебе в частности СПАСИБО!!!.Буду продолжать мучатса(нет выхода).
Большое всем спасибо!!!
P.S:vladgrid загляни к себе на почту!!!
...
Рейтинг: 0 / 0
09.12.2005, 09:35
    #33426552
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
vladgrig To Sam Andrews
авторASPNET добавить довольно трудно, ибо его пароль по умолчанию неуловим
Без комментариев ;) Весёлая шутка - ASPNET - это тот пользователь, который просто по определению не может быть прописан в SQL!!!??? - хотя, я всегда думал (да и практика показывает) на оборот!!!

во-первых я написал "довольно трудно", ибо требует определенных манипуляций
во-вторых, и с каким паролем ты собираешься его туда добавлять? я знаю один путь, лезть в machine.config в procesModel, ты знаешь еще?
...
Рейтинг: 0 / 0
09.12.2005, 10:30
    #33426707
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новая проблемка,соеденение с DB.
авторво-вторых, и с каким паролем ты собираешься его туда добавлять? я знаю один путь, лезть в machine.config в procesModel, ты знаешь еще?
самый банальный способ - прописать его в SQL с аутентификацией Windows а не SQL (SQL и хост на одной машине) - наверное ты про этот способ знал, просто забыл ;)
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Новая проблемка,соеденение с DB. / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]