Avant:Erreur inconnue dans le projet ASP.NET MVC.
Je le code suivant dans mon action du contrôleur MVC. Cela fonctionne bien dans la machine de développement exécutant VS2012 mais ne parvient pas à enregistrer dans l'environnement de production dans IIS. Quel pourrait être le problème? Je suis passé par le code mais pas d'erreur du tout. En production, il ne montre aucune erreur dans e.Message ou dbEx.Message non plus. Merci pour l'aide.
Après
J'ai une action MVC qui est censé enregistrer un fichier en même temps que le reste de l'information.
Le code fonctionne correctement sur ma machine de développement, mais lorsque je l'exécute sur le serveur de production, le fichier n'est pas enregistré. Je n'ai aucune erreur dans mon contrôleur.
Voici ce que j'ai essayé:
- Essayé pour enregistrer les exceptions
- je peux voir le fichier en cours Signalé dans des outils de développement Chrome
- J'ai des autorisations de fichier vérifié dans le dossier cible
Le code:
[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 car vous n'expliquez pas le problème et attend juste que nous le réparions. Qu'avez-vous essayé de le résoudre? Comment le reproduisez-vous? – jgauffin
Tout ce que je mets dedans est exactement ce qu'il s'est passé. Comment suis-je censé expliquer un problème que je ne connais pas? C'est parce que j'ai essayé de le résoudre et que je ne pouvais pas le mettre sur StackOverflow. Je ne suis pas nouveau ici, donc je connais les règles. Le problème est simple: l'extrait de code ci-dessus fonctionne bien et valide les données dans MenuD pour modéliser dans la base de données lorsque je cours dans VS 2012. Aucune erreur du tout, même avec un point de rupture. Pourtant quand je le déploie sur IIS il ne commet pas à la base de données et ce n'est pas parce qu'il n'était pas connecté à db parce que je m'étais connecté avec succès et la chaîne de connexion dans le web config est – Charles
la description. Qu'est-ce qui n'est pas enregistré? Est-ce que ça marche dans certains cas? Le fichier est-il inclus dans le message ou est-il manquant dans l'environnement de production? Avez-vous vérifié les permissions de fichiers? Le dossier existe-t-il? C'est pourquoi vous obtenez un -1. Montrez de l'effort. – jgauffin