在我的网页中,我无法在远程服务器上发回会话变量。
问题是
如果页面不是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时将导致应用程序重新启动。如果是这样我怎么能解决这个问题..
提前感谢。
答案 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 页面加载事件...这可能是它未设置的原因。 ;-)