当前位置:编程学习 > C#/ASP.NET >>

一个小登录页面,提示错误为“未将对象引用设置到对象的实例”

错误提示:

未将对象引用设置到对象的实例。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误: 


行 14:         {
行 15:             string username=Request.Form["username"].ToString();
行 16:             string password=Request.Form["password"].ToString();
行 17: 
行 18:             SqlConnection conn = new SqlConnection("server=192.168.1.8;database=news;uid=sa;pwd=suncheng;");

CS文件代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

namespace manage
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string username=Request.Form["username"].ToString();
            string password=Request.Form["password"].ToString();

            SqlConnection conn = new SqlConnection("server=192.168.1.8;database=news;uid=sa;pwd=suncheng;");
            conn.Open();
            SqlCommand cmd=new SqlCommand("select count(*) from admin where admin='"+username+"' and password='"+password+"'",conn);
            int count = Convert.ToInt32(cmd.ExecuteScalar());
            if (count > 0)
            { 
                Response.Redirect("home.aspx");
            }
            else
            {
                Response.Redirect("index.aspx");
            }
        }
    }
}



ASPX文件代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="manage.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <div>
    <form name="index" method="post" action="index.aspx">
        用户名:<input type="text" id="username" name="username" /><br />
        密码:<input type="password" id="password name="password" /><br />
        <input type="submit" value="提交" />
    </form>
    </div>
    </form>
</body>
</html>

--------------------编程问答--------------------  id="password name="password" 
写错了

应该是
 id="password" name="password"  --------------------编程问答-------------------- --------------------编程问答--------------------
引用 1 楼 net_lover 的回复:
 id="password name="password" 
写错了

应该是
 id="password" name="password"

?有没不同吗?抱歉我没看出来。 --------------------编程问答-------------------- 在C# code中

SqlConnection 没有关闭,你关闭就好了conn.close --------------------编程问答--------------------
引用 3 楼 hozics 的回复:
引用 1 楼 net_lover 的回复:

id="password name="password"
写错了

应该是
id="password" name="password"

?有没不同吗?抱歉我没看出来。



有很大的不同啊! id="password name="password" 明显的语法错误!  --------------------编程问答--------------------
引用 5 楼 hjh600600 的回复:
引用 3 楼 hozics 的回复:
引用 1 楼 net_lover 的回复:

id="password name="password"
写错了

应该是
id="password" name="password"

?有没不同吗?抱歉我没看出来。



有很大的不同啊! id="password name="password" 明显的语法错误!


我修改过来了,可还是不行。打开页面就报错。 --------------------编程问答-------------------- string username=Request.Form["username"].ToString();
string password=Request.Form["password"].ToString();

使用之前先判断
if (Request.Form["username"]!=null&&Request.Form["password"]!=null)
{
            string username=Request.Form["username"].ToString();
            string password=Request.Form["password"].ToString();
} --------------------编程问答-------------------- 你页面一加载,就直接取值,肯定会报没有设置到对象这种错,你应该先做判断

if( Request.Form["username"] != null && Request.Form["password"] != null )
{
    //把你page_load里面的操作放到这里面
}
--------------------编程问答-------------------- 你确定你SQL语句没毛病么 --------------------编程问答--------------------
引用 9 楼 aoye6202 的回复:
你确定你SQL语句没毛病么
lz只问错误提示的内容.SQL注入就以后再弄吧.哈哈 --------------------编程问答--------------------
引用 3 楼 hozics 的回复:
引用 1 楼 net_lover 的回复:

id="password name="password"
写错了

应该是
id="password" name="password"

?有没不同吗?抱歉我没看出来。


是啊,的确佩服1楼的火眼金睛,那么大个引号LZ竟然还没看到,在IDE中,肯定给你划上线了 --------------------编程问答-------------------- 太容易被注入了,用SqlParameter吧 --------------------编程问答-------------------- 遇到  “未将对象引用设置到对象的实例” 这个问题的时候。。。。

99.9% 是因为 你引用对象的错误。。

例如。。。。System.Data.Dataset mydataset=new DataSet();
string MyName=mydataset.Tables[2].Rows[0][0].ToString();
引用了没有事例的东西。。就会出现这个错误。。
--------------------编程问答-------------------- 谢谢大家的回复,我又新建了个login.htm aciton=index.aspx
输入用户名和密码后,还是会出错。但这次是在request的时候出错的



行 14:         {
行 15:                 string username = Request.Form["username"].ToString();
行 16:                 string password = Request.Form["password"].ToString();
行 17: 
行 18:             SqlConnection conn = new SqlConnection("server=192.168.1.8;database=news;uid=sa;pwd=suncheng;");
--------------------编程问答-------------------- Request.Form["password"]为null

null.ToString()?不出异常才怪。 --------------------编程问答-------------------- 谢谢大家,问题解决了,我是模仿北大青鸟 吉林大学的aspx.net课程来学习的。

一开始我用index.aspx action到本页面,但没有判断非空,于是我新建了个login.htm action到index.aspx文件,现在问题已经解决了。谢谢大家的帮助。

不过判断非空那里我还没不是太懂,还要再琢磨一下。 --------------------编程问答-------------------- Request.QueryString["username"].ToString()==""?""Request.QueryString["username"].ToString() --------------------编程问答-------------------- string username=Request.Form["username"].ToString();
string password=Request.Form["password"].ToString();

因为没有收到请求的参数,所以会出错,

你在调试的时候,要从另一个页面跳过来才会有这个参数
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,