Response.Redirect出现HTTP 404错误

时间:2014-02-11 18:35:28

标签: c#-4.0

我收到以下错误:

  

HTTP错误404.0 - 未找到您正在寻找的资源   删除,更改名称或暂时不可用

使用以下代码:

SqlConnection cn = new SqlConnection(@"Data Source=bpnaidu-pc\sqlexpress;Initial Catalog=UserLogIn;Integrated Security=True;Pooling=False");

cn.Open();
SqlCommand cmd = new SqlCommand( "INSERT INTO regd values('" + ddl_signup.Text + "','" + txt_user.Text + "','" + txtEmail1.Text+ "','" + txtPassword.Text + "','" + txtConPassword.Text + "')", cn);
cmd.ExecuteNonQuery();
Response.Redirect("welcome to "+txt_user.Text.ToString());
Response.Redirect("Home.aspx"); 
cn.Close();

问题出在哪里?

1 个答案:

答案 0 :(得分:0)

虽然问题没有直接明确,但答案是。问题出在这一行:

Response.Redirect("welcome to "+txt_user.Text.ToString());

Response.Redirect将浏览器发送到参数中指定的网页,因此您尝试将浏览器发送到名为“welcome to {...}”的页面。我发现这不太可能。我怀疑你真正想要的是:

Response.Write("welcome to "+txt_user.Text.ToString());

Response.Write只是将文本字符串直接发送到HTTP输出缓冲区。

然而,您通过重定向到Home.aspx立即对此进行了跟进,所以实际上该行实际上什么也没做,因为您刚刚将输出写出来,告诉浏览器重定向到另一个页面,所以用户不会看到您的欢迎信息。

我还想指出你也对SQL注入攻击持开放态度 - 你的界限:

SqlCommand cmd = new SqlCommand( "INSERT INTO regd values('" + ddl_signup.Text + "','" + txt_user.Text + "','" + txtEmail1.Text+ "','" + txtPassword.Text + "','" + txtConPassword.Text + "')", cn);

...对做坏事的用户开放;如果txt_user.Text包含文本'); drop table regd;,那么很有可能您最终会丢失一个regd表。要修复,您需要使用参数化的SQL语句。我强烈建议您通过阅读Jeff Atwood的blog article about this以及如何减轻这一点来跟进。