Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
Новая проблемка,соеденение с 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(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 23:36 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
A mojet eto chtoto v file Web.config nujno chtoto izmenit.Podskajite plizzzzzz. Zaranie spasibo!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 01:05 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
"Redirect URI cannot contain newline characters" Response.Redirect(ex.Message); редирект на описание ошибки.. мощно =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 06:07 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
Nu i chto eto znachit ,chto s etim delat??? Zaranie spasibo!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 15:46 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
заменить Response.Redirect(ex.Message); на Response.Write(ex.Message); и сюда, что напишет с уважением... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 16:29 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
Спасибо Sam Andrews.Теперь вышла ошибка что неможет открыть DB для user ...\ASPNET.Подскажи пожалуста как мне добабить етого зверя. Большое спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 18:26 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
ASPNET добавить довольно трудно, ибо его пароль по умолчанию неуловим лучше создать учетную запись на сервере БД, и в строке подключения заменить integrated security=true на uid=тутимя pwd=тутпароль по секрету: (если у тебя для учебы все это, и сервер БД твой локальный, то можно просто использовать учетную запись sa, но больше так никогда не делай =))) ЗЫ: есть еще масса вариантов, через имперсонизацию и прочее, можно посмотреть в мсдне... с уважением... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 18:37 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
Спасибо Sam Andrews. Да ты правильно говориш весь проект у меня на компе,я сделал как ты сказал сделал подключение с user id=sa.Вроде все прошло как надо,но теперь вылетело на остроке: n=System.Convert.ToInt32(cm.ExecuteScalar()); чтото не так Помоги пожалусто. Зарание спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 18:58 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
надо смотреть что делает хранимая процедура FindUser ExecuteScalar - выполняет запрос и возвращает первый столбец первой строки выборки, видимо туда попадает строковое значение, которое не может быть приведено к инту... с уважением... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 19:24 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
FindUser делает ето: CREATE PROCEDURE FindUser @Name nvarchar(50), @Password nvarchar(50) AS SELECT COUNT(ID) FROM Users WHERE UserName = @Name AND Password = @Password GO вроде все должно работать но непойму в чем загвостка??? Подскажи направь на правильный путь. Зарание благодарю!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 19:32 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
какой текст ошибки? возможно проблема в самом запросе хранимки с уважением... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 19:38 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
Text: System.InvalidCastExeption: Object must impement IConvertible с уважением... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 20:15 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
Ну где же ты Sam Andrews выручай горю. Запание спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 22:45 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
авторn=System.Convert.ToInt32(cm.ExecuteScalar()); Во первых, я бы проверил, что возвращает простой запрос (без всяких конвертаций) - cm.ExecuteScalar() - хотя, может это из разряда высшей математики - в данном конкретном случае ;) Есть варианты значений - ничего, какое-то строковое значение, DBNull and etc. Вообще не догоняю, к чему эта конвертация - типо для солидности, что ли!!!??? To Sam Andrews авторASPNET добавить довольно трудно, ибо его пароль по умолчанию неуловим лучше создать учетную запись на сервере БД, и в строке подключения заменить integrated security=true на uid=тутимя pwd=тутпароль Без комментариев ;) Весёлая шутка - ASPNET - это тот пользователь, который просто по определению не может быть прописан в SQL!!!??? - хотя, я всегда думал (да и практика показывает) на оборот!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 23:07 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
Попробовал и так : cm.ExecuteScalar(); и так : n=((int)cm.ExecuteScalar()); и всеравно вылетает на етой строке(блин) Зарание спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 23:28 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
теперь попробуй object obj = cm.ExecuteScalar(); и посмотри что будет в obj когда книжки читать начнем? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 23:35 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
одна из умных книг ;) Проверка пользователей с помощью базы данных Как вам уже известно, для аутентификации пользователей с помощью файла 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 автор топика - может перед тем как идти в наступление, почитать книги? Пока писал пост - уже опередили с пожеланием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 23:37 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
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) Так что выручайте друзья вся надежда на вас. Зарание благодарю!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 00:19 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
На нас надейся, а сам не плошай... ;) - книги у тебя немного стрёмные, судя по примерам (особенно вот это - txtUserName.Text.ToLower(), txtPassword.Text.ToLower()) Теперь к делу (долго объяснять ничего не стану - и так много написано - просто делай по предложенной схеме) web.config Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. здесь код выписывать не стану - просто объясню логику: если проходим успешно нашу процедуру проверки наличия пользователя - CheckPassword - то редиректим на закрытую страницу, иначе, пишем, что пользователь не найден. теперь сама процедура проверки - CheckPassword: собственно, она неплохо закоментирована в строках из книги - единственное, что могу добавить от себя - нехватает объявленной переменной oledbUsers (строка подключения к БД) - но, этот вопрос вы уже решили раньше насколько я понимаю. P.S. всё должно получиться - есть такая беда как точки остонова выполнения кода (BreakPoint) - довольно мощное оружие в умелых руках (не стесняйся их использовать) - можно пройти весь код в Debug построчно и посмотреть за ходом выполнения кода, наличием переменных and etc. Желаю удачи!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 00:58 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
Добавил строку как ты сказал: <authentication mode="Forms" > <forms name="P2PforDevelopers" loginUrl="login.aspx" path="/" protection="All"> <credentials passwordFormat="SHA1"></credentials> </forms> </authentication> <authorization> <deny users="?" /> </authorization> но всеравно вылетает на той же ошибке. Выручай друг,загибаюсь. Зарание благодарю!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 01:15 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
авторВыручай друг,загибаюсь. Зарание благодарю!!! Сказать больше, чем здесь уже сказано - не в силах ни один человек... Я вот, например, не умею петь (от рождения не дано) - представь, не страдаю от этого... Тебе не дано охватить необъятное - предлагаю тоже не расстраиваться... P.S. Помощь (на мой взгляд) можно оказать, но только написав код за тебя и для тебя - а для этого нужно сидеть за твоим компом - задача не лёгкая, но осуществимая (при наличии RemoteAssistance) - если справишься с этим условием - ЧЕСТНО обещаю помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 01:36 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
вот здесь я обитаю (обрати внимание на связь online) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 01:40 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
Спасибо тебе vladgrid но знаеш я несильно както переживаю,просто немного обидно,вроде и код рабочий а неработает,точьно тебе говорю дело все как всегда в какойто мелочи(так всегда бывает).А за помощ большое всем и тебе в частности СПАСИБО!!!.Буду продолжать мучатса(нет выхода). Большое всем спасибо!!! P.S:vladgrid загляни к себе на почту!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 02:01 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
vladgrig To Sam Andrews авторASPNET добавить довольно трудно, ибо его пароль по умолчанию неуловим Без комментариев ;) Весёлая шутка - ASPNET - это тот пользователь, который просто по определению не может быть прописан в SQL!!!??? - хотя, я всегда думал (да и практика показывает) на оборот!!! во-первых я написал "довольно трудно", ибо требует определенных манипуляций во-вторых, и с каким паролем ты собираешься его туда добавлять? я знаю один путь, лезть в machine.config в procesModel, ты знаешь еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 09:35 |
|
||
|
Новая проблемка,соеденение с DB.
|
|||
|---|---|---|---|
|
#18+
авторво-вторых, и с каким паролем ты собираешься его туда добавлять? я знаю один путь, лезть в machine.config в procesModel, ты знаешь еще? самый банальный способ - прописать его в SQL с аутентификацией Windows а не SQL (SQL и хост на одной машине) - наверное ты про этот способ знал, просто забыл ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2005, 10:30 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33423832&tid=1393234]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 260ms |
| total: | 403ms |

| 0 / 0 |
