2

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

问题是

如果页面不是 IsPostback,那么我可以获得会话变量。

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

当我使用异步文件上传时,也会出现同样的错误。我正在使用 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);
       }

       }

将值插入数据库。

经过一番谷歌搜索后,我读到当任何文件添加到任何子目录或编辑 webconfig 时,都会导致应用程序重新启动。

如果是这样我该如何解决这个..

提前致谢。

4

6 回答 6

0

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

于 2011-05-02T19:21:31.230 回答
0

您必须检查您的会话是否为空或为空,如下所示:

 if (Session["User_id"] == null || Session["User_id"].ToString() == string.Empty)
 {
    Response.write(Session["User_id"].ToString());
 }
 else
 {
   // your code
 }
于 2011-05-02T13:10:51.020 回答
0

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

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

于 2011-05-02T13:11:42.020 回答
0

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

希望这可以帮助。

于 2011-05-02T12:50:46.473 回答
0

请提供代码,否则我们无法猜测问题。不过,您始终可以在使用会话变量之前对其进行空值检查。

if(Session["User_id"]) != null;
于 2011-05-02T12:56:59.323 回答
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()Method,你应该使用Convert.ToString,这也是处理空值。

于 2011-05-02T13:14:59.763 回答