我在网上下了个网站,运行后下面的这段代码提示未将对象引用设置到对象实例cart.MigrateShoppingCartItems(Session["AnonUID"].ToString(), UserName.Text);
是在登录/注册部分出现差错的,就是我登录以前注册的账户,会提示上述错误,出现错误的完整的代码如下:<%@ Page Language="C#" Inherits="IBuyAdventure.PageBase" src="components/stdpage.cs" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Register TagPrefix="IBA" TagName="Header" Src="UserControl/Header.ascx" %>
<%@ Register TagPrefix="IBA" TagName="Categories" Src="UserControl/Categories.ascx" %><html>
  <head>
    <title>达也电子商务网</title>
  </head> <script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e) {
// Store Return Url in Page State
if (Request.QueryString["ReturnUrl"] != null)
{
ReturnUrl.Value = Request.QueryString["ReturnUrl"];
((HyperLink)RegisterUser).NavigateUrl = "Register.aspx?ReturnUrl=" + ReturnUrl.Value;
}
} void LoginBtn_Click(Object sender, EventArgs e) {
IBuyAdventure.UsersDB users = new IBuyAdventure.UsersDB(getConnStr());
IBuyAdventure.CartDB cart = new IBuyAdventure.CartDB(getConnStr());
if (users.ValidateLogin(UserName.Text, Password.Text)) {
// Migrate any temporary shopping cart items to logged-in username
cart.MigrateShoppingCartItems(Session["AnonUID"].ToString(), UserName.Text);
// Set Client Authentication Cookie
FormsAuthentication.RedirectFromLoginPage(UserName.Text, Persist.Checked);
}
else {
Message.Text = "注册失败,请输入正确资料再次注册.";
}
}
</script>
  <body background="images/back_sub.gif">
    <form method=post action="Login.aspx" runat="server">
      <font face="Verdana, Arial, Helvetica" size="2">
        <table border="0">
          <tr>
            <td colspan="5">
              <IBA:Header id="Header" runat="server"/>
            </td>
          </tr>
          <!--Begin Navigational Buttons-->
          <tr>
            <td rowspan="5" align="left" valign="top">
              <IBA:Categories id="Categories" runat="server"/>
            </td>
            <td valign="top">
              <center>
<br>
<input type="hidden" value="/IBuyAdventure/default.aspx" id="ReturnUrl" runat="server">
<P><font size="2">要购买本站物品 请先登陆或注册:<br><br>
<table cellpadding="5" colspan="2">
<tr>
<td width="310" bgcolor="#800000">
<font color="#ffffff" style="Verdana, Arial, Helvetica" size="2"><b>注册</b></font>
</td>
</tr>
<tr>
<td bgcolor="f7efde" valign=top>
<table>
<tr>
<td width=100><font size="2">用户名: </font></td>
<td><asp:textbox id="UserName" width="160" runat="server"/></td>
</tr>
<tr>
<td><font size="2">密码: </font></td>
<td><asp:textbox id="Password" TextMode="Password" width="160" runat="server"/></td>
</tr>
<tr>
<td></td>
<td><asp:checkbox id="Persist" runat="server"/> <font size="2">保存密码</font></td>
</tr>
<tr>
<td colspan="2" align="right">
<asp:button BackColor="red" BorderColor="red" Text=" 确认 " OnClick="LoginBtn_Click" runat="server"/>
</td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<font size="2">
<asp:HyperLink NavigateUrl="Register.aspx" id="RegisterUser" runat="server">新用户注册</asp:hyperlink>
</font><br><br>
<font size="2" color="red">
<b><asp:label id="Message" runat="server"/></b>
</font>
              </center>
            </td>
          </tr>
        </table>
      </font>
    </form>
  </body>
</html>
望大家帮帮忙,先谢过了~

解决方案 »

  1.   

    Session["AnonUID"] 是空的,先判断下
      

  2.   

    把Session["AnonUID"].ToString()  换成 Convert.ToString(Session["AnonUID"])
      

  3.   

    Session["AnonUID"]本来是一个null
    你一定要给他.ToString()肯定会报错了
    所以你要先加一个判断  判断Session["AnonUID"]不为空在.ToString()
      

  4.   

    Session["AnonUID"].ToString()
    你转换的前提是session里有值啊,未将对象引用设置到对象实例应该是AnonUID参数没值。
    保存session的代码去看一下,为什么会没保存AnonUID的值
      

  5.   


    if(Session["AnonUID"]!=null)
    {
    cart.MigrateShoppingCartItems(Session["AnonUID"].ToString(), UserName.Text);
    }