之前:
我的MVC控制器操作中有以下代码。它在运行VS2012的开发机器上运行良好,但无法保存在IIS的生产环境中。 可能是什么问题呢?我已经介入代码但没有任何错误。在生产中,它不会在e.Message或dbEx.Message中显示任何错误。谢谢你的帮助。
后
我有一个MVC动作,它应该将文件与其余信息一起保存。
代码在我的开发人员计算机上运行正常,但是当我在生产服务器上运行它时,文件不会保存。我的控制器完全没有错误。
以下是我尝试的内容:
代码:
[HttpPost]
public ActionResult CreateRecipe(MenuDto model, HttpPostedFileBase file)
{
if (Session["username"] == null || Session["jobtitle"] == null)
{
TempData["msg"] = "Sorry your session has timed out or you have not logged in. Please log-in.";
return RedirectToAction("LogIn", "Home");
}
try
{
var cl = new CategoryBL();
ViewBag.ListCategories = new SelectList(new List<Category>(){ new Category() { CatName = "--Select Category--"}}.Concat(cl.RetrieveAll()),
"CatName", "CatName");
RecipeBL bl = new RecipeBL();
model.Recipes = bl.RetrieveAll();
if (file == null)
{
ViewBag.Msg = "Please select a picture for this recipe";
return View(model);
}
string path = "";
if (ModelState.IsValid)
{
if (file != null)
{
string pic = System.IO.Path.GetFileName(file.FileName);
path = System.IO.Path.Combine(Server.MapPath("~/pictures/Recipes"), pic);
// file is uploaded
file.SaveAs(path);
model.Image = @"\pictures\Recipes\" + file.FileName;
}
var item = new Recipe()
{
RecipeCode = model.RecipeCode,
RecipeMethod = model.RecipeMethod,
RecipeName = model.RecipeName,
SellingPrice = model.SellingPrice,
Image = model.Image,
SubCategory = model.SubCategory
};
bl.Create(item, Session["username"].ToString());
}
ViewBag.Msg = "Recipe was successfully registered.";
model.Recipes = bl.RetrieveAll();
return View(model);
}
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
}
}
ViewBag.Msg = "Recipe registration failed." + dbEx.Message;
return View(model);
}
catch (Exception e)
{
ViewBag.Msg = "Recipe registration failed." + e.Message;
return View(model);
}
}
答案 0 :(得分:0)
最后,错误出现了。这是一个fie访问被拒绝错误 - 将文件上传到C:\ users \ inetpub ...。\ picturefolder \ failed。拒绝访问。我意识到错误是隐藏的,但我不知道为什么。它最终在今天展现出来。
非常简单的解决方案是更改登录用户的文件夹上的安全/文件夹权限设置。我右键单击inetpub父文件夹并在上下文菜单中选择属性,然后选择安全选项卡。当我点击登录用户时,我注意到在“允许”下选中了“权限”窗口中的所有框。所以我选择了ALL(写等),然后选择了Applied。我现在很高兴。我尝试了保存上传的图像文件的操作,它按预期工作。 :)