会话错误:对象未设置为实例

时间:2011-05-02 12:48:45

标签: c# asp.net visual-studio asyncfileupload

在我的网页中,我无法在远程服务器上发回会话变量。

问题是

如果页面不是IsPostback,那么我就能得到会话变量。

但如果页面回发则会出现错误。

当我使用asynchfile上传时,会出现同样的错误。我正在使用asynchfileupload上传图像并将其存储到会话变量中。然后在按钮上单击我将数据保存到目录。

当我将任何文件上传到服务器时,会出现此问题。我正在使用asynchfileupload控件上传图像。但是它并没有经常发生。

这是我的代码

protected void AsynImageLoader_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
    if (AsynImageLoader.PostedFile != null)
    {
        string extension = System.IO.Path.GetExtension(AsynImageLoader.PostedFile.FileName);

        if (extension == ".jpg" || extension == ".gif" || extension == ".jpeg" || extension == ".png")
        {
            HttpPostedFile file = AsynImageLoader.PostedFile;
            Session["TempImage"] = ReadFile(file);
        }
    }
}

点击按钮

   var storedImage = Session["TempImage"] as byte[];
   String Strthumbpath = Server.MapPath("content\\thumbnail\\");
   if (storedImage != null)
   {
       System.Drawing.Image image = GetImage(storedImage);
       if (image != null)
       {
       image.Save(Strthumbpath + strFileName);
       }

       }

将值插入datbase。

在pomuch谷歌搜索后,我读到当任何文件添加到任何子目录或编辑webconfig时将导致应用程序重新启动。

如果是这样我怎么能解决这个问题..

提前感谢。

6 个答案:

答案 0 :(得分:0)

当您回发时,看起来您的会话变量“User_id”被删除了。您看到“对象未设置为对象的实例”,因为您尝试在空对象上执行“ToString()”方法,这是不允许的。

希望这有帮助。

答案 1 :(得分:0)

请提供代码,没有我们无法猜出的问题。 但是,在使用会话变量之前,您始终可以对其进行空检查。

if(Session["User_id"]) != null;

答案 2 :(得分:0)

你必须检查你的会话是否为null或空如下:

 if (Session["User_id"] == null || Session["User_id"].ToString() == string.Empty)
 {
    Response.write(Session["User_id"].ToString());
 }
 else
 {
   // your code
 }

答案 3 :(得分:0)

检查远程计算机上的web.config文件,确保正确配置了sessionState元素。您可能在远程服务器上将mode属性设置为Off

正如其他人所指出的那样,在访问您已存储在会话中的对象的属性之前,您可以更加防御性地检查null

答案 4 :(得分:0)

首次检查会议。

if (Session["User_id"] == null)
{
//Put code here

}
else
{
     Response.Write(Session["User_id"]);

     // or you can write as below

     Response.Write(Convert.ToString(Session["User_id"]));
}

永远不要使用.ToString()方法,你应该使用Convert.ToString,这也是句柄空值。

答案 5 :(得分:0)

按钮点击事件发生 AFTER 页面加载事件...这可能是它未设置的原因。 ;-)