ADI@345 Ответов: 2

URI перенаправления не может содержать символы новой строки. Ошибка сервера


Redirect URI cannot contain newline characters.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: Redirect URI cannot contain newline characters.



Я получаю эту ошибку ,когда мой файл находится на сервере, в localhost мой код работает нормально. Пожалуйста, предоставьте мне решение для этого

Что я уже пробовал:

protected void btnsave_Click(object sender, EventArgs e)
 {
     try
     {
         using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
         using (SqlCommand cmm = new SqlCommand())
         {
             cmm.Connection = cnn;
             cmm.CommandType = CommandType.Text;
             if (btnsave.Text == "Save")
             {
                 cmm.CommandText = "INSERT INTO register_user([name],[email],[email_pass],[panel_pass],[dept])" + "VALUES(@name,@email,@email_pass,@panel_pass,@dept)";

                 cmm.Parameters.AddWithValue("@name", txtname.Text.Trim().ToString());
                 cmm.Parameters.AddWithValue("@email", txtemail.Text.Trim().ToString());
                 cmm.Parameters.AddWithValue("@email_pass", txtemailpass.Text.Trim().ToString());
                 cmm.Parameters.AddWithValue("@panel_pass", txtpass.Text.Trim().ToString());
                 cmm.Parameters.AddWithValue("@dept", ddldept.Text.Trim().ToString());

             }

             else
             {
                 cmm.CommandText = "UPDATE [register_user] SET name=@name,email=@email,email_pass=@email_pass,panel_pass=@panel_pass,dept=@dept where id=" + ViewState["id"];

                 cmm.Parameters.AddWithValue("@name", txtname.Text.Trim().ToString());
                 cmm.Parameters.AddWithValue("@email", txtemail.Text.Trim().ToString());
                 cmm.Parameters.AddWithValue("@email_pass", txtemailpass.Text.Trim().ToString());
                 cmm.Parameters.AddWithValue("@panel_pass", txtpass.Text.Trim().ToString());
                 cmm.Parameters.AddWithValue("@dept", ddldept.Text.Trim().ToString());



                 }
                     cmm.Connection.Open();
                     cmm.ExecuteNonQuery();
                     cmm.Connection.Close();

                     ScriptManager.RegisterStartupScript(this, GetType(), "Success", "alert('Information Save Successfully.');", true);
                 gvbind();
                 clear();
             }
         }
         catch (Exception ex)
         {
             Response.Redirect(ex.Message);
         }

 }

2 Ответов

Рейтинг:
7

Karthik_Mahalingam

Поставить точка разрыва[^] в городе catch заблокируйте и посмотрите, что такое фактическое сообщение об ошибке, и попытайтесь исправить его.

catch (Exception ex)
            {

HttpResponse.Метод Перенаправления [^] используется для перехода на другую страницу, она принимает url в качестве аргумента, где как вы передаете сообщение об ошибке исключения, так и метод будет искать страницу (url), которой там нет, например,
Response.Redirect("object reference not set to an instance");
Это должно выглядеть примерно так
Response.Redirect("SomePage.aspx")

Вы должны показать сообщение об ошибке следующими способами,

catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('"+ex.Message+"');", true);
            }

или

Добавьте элемент управления label на свою страницу и покажите информацию об ошибке в метке как
Label1.Text = ex.Message;

или
Создайте страницу ошибок и загрузите информацию из строки запроса следующим образом
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblMessage" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>

protected void Page_Load(object sender, EventArgs e)
       {
           lblMessage.Text = Request.QueryString["Message"];

       }

с помощью
catch (Exception ex)
           {
               Response.Redirect("ErrorPage.aspx?Message=" + ex.Message);
           }


Рейтинг:
17

bahety_nitesh@yahoo.com

Почему u r перенаправляет исключения из "ответа.Перенаправление" способ ? Это должно быть какое-то имя страницы, которое показывает ошибку пользователям приложения. Вот почему он бросает ошибку.

Ответ.Перенаправление(например,сообщение);


ADI@345

Итак, каков же будет код для блока catch..

ADI@345

Он отлично работает на локальном хосте, но получает ошибку на сервере.

phil.o

Тогда это означает, что вы не доберетесь до catch блокируйте локально.
Это означает, что часть кода в try блок вызывает некоторые проблемы при выполнении на сервере. Мои ставки были бы неправильной строкой подключения или недостаточными разрешениями, установленными на сервере базы данных (когда вы выполняете свой код локально, ваша учетная запись пользователя подключается к БД; когда вы выполняете свой код с сервера, учетная запись, запускающая службу, подключается к БД; в зависимости от разрешений это может пойти боком).

ADI@345

наконец-то я знаю, почему получаю эту ошибку..спасибо