C# 会话错误:对象未设置为实例
在我的网页中,我无法在远程服务器中获取post上的会话变量 问题是 如果页面不是IsPostback,那么我可以获取会话变量 但如果页面回发,则会出现错误 当我使用asynchfile上载时也会出现同样的错误。我使用asynchfileupload上传图像并将其存储到会话变量。然后单击按钮,我将数据保存到目录中 当我将任何文件上载到服务器时,都会出现此问题。我正在使用asynchfileupload控件上载图像,但这种情况并不经常发生 这是我的密码C# 会话错误:对象未设置为实例,c#,asp.net,visual-studio,asyncfileupload,C#,Asp.net,Visual Studio,Asyncfileupload,在我的网页中,我无法在远程服务器中获取post上的会话变量 问题是 如果页面不是IsPostback,那么我可以获取会话变量 但如果页面回发,则会出现错误 当我使用asynchfile上载时也会出现同样的错误。我使用asynchfileupload上传图像并将其存储到会话变量。然后单击按钮,我将数据保存到目录中 当我将任何文件上载到服务器时,都会出现此问题。我正在使用asynchfileupload控件上载图像,但这种情况并不经常发生 这是我的密码 protected void AsynImag
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时,都会导致应用程序重新启动
如果是这样,我该如何解决这个问题
提前感谢。您发回邮件时,名为“User\u id”的会话变量似乎已被删除。您会看到“对象未设置为对象的实例”,因为您试图对空对象执行“ToString()”方法,这是不允许的
希望这能有所帮助。当您发回时,名为“User\u id”的会话变量似乎被删除。您会看到“对象未设置为对象的实例”,因为您试图对空对象执行“ToString()”方法,这是不允许的
希望这有帮助。请提供代码,否则我们无法猜测问题。 不过,在使用会话变量之前,您始终可以对其执行空检查
if(Session["User_id"]) != null;
请提供代码,否则我们无法猜测问题。 不过,在使用会话变量之前,您始终可以对其执行空检查
if(Session["User_id"]) != null;
您必须检查session是否为null或空,如下所示:
if (Session["User_id"] == null || Session["User_id"].ToString() == string.Empty)
{
Response.write(Session["User_id"].ToString());
}
else
{
// your code
}
您必须检查session是否为null或空,如下所示:
if (Session["User_id"] == null || Session["User_id"].ToString() == string.Empty)
{
Response.write(Session["User_id"].ToString());
}
else
{
// your code
}
检查远程计算机上的
web.config
文件,确保元素配置正确。您可以在远程服务器上将模式
属性设置为关闭
正如其他人指出的那样,在访问会话中存储的对象的属性之前,您可以编写更具防御性的代码检查
null
。检查远程计算机上的web.config
文件,确保元素配置正确。您可以在远程服务器上将模式
属性设置为关闭
正如其他人所指出的,在访问会话中存储的对象的属性之前,您可以编写更具防御性的代码检查null
。第一次检查会话
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()
方法,您应该使用转换.ToString
,这也是句柄空值。第一次检查会话
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()
方法,您应该使用转换.ToString
,这也是句柄空值。按钮单击事件发生在页面加载事件之后。。。这可能就是它未设置的原因。;-) 按钮单击事件发生在页面加载事件之后,。。。这可能就是它未设置的原因。;-) 尝试将其作为隐藏表单值而不是会话传递-运气好吗?尝试将其作为隐藏表单值而不是会话传递-运气好吗?在我的webconfig文件中,会话是给定的,您是否可以检查在不进行回发时是否可以在页面加载时创建cookie,然后在页面回发时尝试读取cookie值?我认为存储和检索ASP.NET使用的会话cookie可能会有问题。URL中的主机名是否有可能包含下划线字符(“uU”)?在我的webconfig文件中,会给出会话,您可以检查在不回发时是否可以在页面加载时创建cookie,然后在回发页面时尝试读取cookie值吗?我认为存储和检索ASP.NET使用的会话cookie可能会有问题。URL中的主机名是否包含下划线字符(“”)有可能吗?是的,你是对的。我不明白为什么回发和页面刷新时会话变量user_id会变为null。但是在poage加载上,如果不是ispostback,那么我会得到会话值。是的,你是对的。我不明白为什么回发和页面刷新时会话变量user_id会变为null。但如果不是,在poage加载上ispostback然后我得到会话值。我已经用代码更新了我的问题。你可以检查吗。提前谢谢。我已经用代码更新了我的问题。你可以检查吗。提前谢谢。我的疑问是为什么会话变量在页面回发和页面刷新时变为null。我的疑问是为什么会话变量在页面回发和刷新时变为null页面刷新。