您好,在我的mvc3应用程序中,我遇到以下问题: 我的用户可以在使用表单身份验证登录后上载图像。现在有客户抱怨他们无法上传文件。我调查了这个问题,看到当他们上传图片时,所有会话都会丢失。它们不再登录,因此当我尝试获取登录以将图像放入数据库时,有一个对象是空引用错误。我看到图像已正确上传但它们已注销,我认为所有会话都丢失了。也许这是因为应用程序池已被回收或工作过程?他们无法上传大于500kb的图像,为什么应用程序池应该回收?谁能建议我做什么?提前谢谢。
EDIT添加了一些代码:
查看:
@using (Html.BeginForm("Upload", "Fotos", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<label>Afbeelding:</label><br />
<input type="file" name="file" id="file" title="Kies uw afbeelding" />
<br />
<label>Titel:</label><span style="color:Red;font-weight:bold;"> @MvcHtmlString.Create(ViewBag.titel)</span><br />
<input type="text" name="Title" value="" />
<br /><label>Omschrijving:</label><span style="color:Red;font-weight:bold;"> @MvcHtmlString.Create(ViewBag.omschrijving)</span><br />
<textarea name="Beschrijving" rows="4" cols="25"></textarea><br /><br />
<input type="submit" value="Foto uploaden" />
}
这是控制器代码
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file, string Title, string Beschrijving)
{
try
{
MembershipUser currentUser = Membership.GetUser(User.Identity.Name, true /* userIsOnline */);
string uploader = currentUser.UserName;
string uploadermail = currentUser.Email;
using (var ctx = new DB_24468_weerstatEntities())
{
var imagetype = file.ContentType;
if (imagetype.Contains("image"))
{
if (file.ContentLength > 0 && file.ContentLength < 500000)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Content/Images/Weerfotos"), fileName);
file.SaveAs(path);
var link = "/Content/Images/Weerfotos/" + fileName;
var image = new Image();
image.Name = fileName;
image.Url = "../.." + link;
image.Approved = false;
image.Username = uploader;
image.Description = Beschrijving;
image.Title = Title;
ctx.AddToImages(image);
ctx.SaveChanges();
}
}
}
return View();
}
catch (Exception ex)
{
ErrorSignal.FromCurrentContext().Raise(ex);
throw;
}
尝试获取当前用户名或电子邮件时代码直接失败,因为会话丢失..如果我没有得到任何会话详细信息,一切正常,但用户在发布他的图像后退出.. < / p>