ASP.NET MVC项目中的未知错误。

时间:2014-05-13 17:32:06

标签: asp.net-mvc

之前:

我的MVC控制器操作中有以下代码。它在运行VS2012的开发机器上运行良好,但无法保存在IIS的生产环境中。 可能是什么问题呢?我已经介入代码但没有任何错误。在生产中,它不会在e.Message或dbEx.Message中显示任何错误。谢谢你的帮助。

我有一个MVC动作,它应该将文件与其余信息一起保存。

代码在我的开发人员计算机上运行正常,但是当我在生产服务器上运行它时,文件不会保存。我的控制器完全没有错误。

以下是我尝试的内容:

  1. 尝试记录例外
  2. 我可以在Chrome开发者工具
  3. 中看到该文件
  4. 我已检查目标文件夹中的文件权限
  5. 代码:

        [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);
            }
        }
    

1 个答案:

答案 0 :(得分:0)

最后,错误出现了。这是一个fie访问被拒绝错误 - 将文件上传到C:\ users \ inetpub ...。\ picturefolder \ failed。拒绝访问。我意识到错误是隐藏的,但我不知道为什么。它最终在今天展现出来。

非常简单的解决方案是更改登录用户的文件夹上的安全/文件夹权限设置。我右键单击inetpub父文件夹并在上下文菜单中选择属性,然后选择安全选项卡。当我点击登录用户时,我注意到在“允许”下选中了“权限”窗口中的所有框。所以我选择了ALL(写等),然后选择了Applied。我现在很高兴。我尝试了保存上传的图像文件的操作,它按预期工作。 :)