我有一个使用c#和asp.net mvc(MVC5)开发的应用程序。我使用Visual Studio 2017的发布工具发布了可以在服务器上部署的应用程序的发布包。
该应用程序主要具有两个功能,一个用于注册学生,另一个用于注册他们的笔记。
注册学生的程序效果很好,我可以做所有与之相关的工作(编辑,删除等)
当我尝试为特定学生注册笔记时,出现错误。不管做什么我都不能注册笔记。
我的应用程序中有一个“ Error.cshtml”视图,每次尝试为学生注册笔记时,都会返回该视图。
最奇怪的问题是,在我的本地计算机上,一切正常(我可以同时注册学生及其笔记)。但是,一旦我在服务器上部署了相同的工作版本,便无法使用note功能。
以下是部分代码:
创建视图:
<div class="form-group" id="id1">
@Html.LabelFor(model => model.NotePremierTrimestre, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.NotePremierTrimestre, new { htmlAttributes = new { @class = "form-control", @id = "id01" } })
@Html.ValidationMessageFor(model => model.NotePremierTrimestre, "", new { @class = "text-danger" })
</div>
</div>
Resultats控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Save([Bind(Include = "IdResultat,NotePremierTrimestre,NoteDeuxiemeTrimestre,NoteTroixiemeTrimestre,NotePremierSemestre,NoteDeuxiemeSemestre,MoyenneGenerale,Mention,MoyenneCEPE,MoyenneFSLC,MoyenneBEPC,MoyenneCAP,MoyenneGCEO,MoyenneProbatoire,MoyenneBACC,MoyenneGCEA,MoyenneBTS,MoyenneDUT,MoyenneHND,MoyLicence,MoyMasterPro,MoyMasterRecherche,IdApprennant,IdAnnee")] Resultat resultat, [Bind(Include = "IdNoteDiscipline,Note,IdDiscipline,IdResultat")] NoteDiscipline noteDiscipline, string examenOfficiel)
{
if (ModelState.IsValid)
{
if (resultat.NotePremierTrimestre != null & resultat.NoteDeuxiemeTrimestre != null & resultat.NoteTroixiemeTrimestre != null)
{
resultat.MoyenneGenerale = (resultat.NotePremierTrimestre + resultat.NoteDeuxiemeTrimestre + resultat.NoteTroixiemeTrimestre) / 3;
}
else if (resultat.NotePremierSemestre != null & resultat.NoteDeuxiemeSemestre != null)
{
resultat.MoyenneGenerale = (resultat.NotePremierSemestre + resultat.NoteDeuxiemeSemestre) / 2;
}
else
{
resultat.MoyenneGenerale = 0;
}
if (examenOfficiel == "BEPC")
{
resultat.MoyenneBEPC = resultat.MoyenneCEPE;
}
else if (examenOfficiel == "CAP")
{
resultat.MoyenneCAP = resultat.MoyenneCEPE;
}
else if (examenOfficiel == "GCE O'Level")
{
resultat.MoyenneGCEO = resultat.MoyenneCEPE;
}
else if (examenOfficiel == "Probatoire")
{
resultat.MoyenneProbatoire = resultat.MoyenneCEPE;
}
else if (examenOfficiel == "Baccalauréat")
{
resultat.MoyenneBACC = resultat.MoyenneCEPE;
}
else if (examenOfficiel == "GCE A'Level")
{
resultat.MoyenneGCEA = resultat.MoyenneCEPE;
}
else if (examenOfficiel == "BTS")
{
resultat.MoyenneBTS = resultat.MoyenneCEPE;
}
else if (examenOfficiel == "Licence")
{
resultat.MoyLicence = resultat.MoyenneCEPE;
}
else if (examenOfficiel == "Master Professionnel")
{
resultat.MoyMasterPro = resultat.MoyenneCEPE;
}
else if (examenOfficiel == "Master Recherche")
{
resultat.MoyMasterRecherche = resultat.MoyenneCEPE;
}
else if (examenOfficiel == "HND")
{
resultat.MoyenneHND = resultat.MoyenneCEPE;
}
else
{
}
//Vérification de la base de données pour voir si un apprenant avec cette note a déjà été enregistré
//Resultat result2 = null;
//try
//{
// result2 = db.Resultats.Where(b => b.IdApprennant == resultat.IdApprennant && b.IdAnnee == resultat.IdAnnee).First();
//} catch
//{
//}
//if (result2 == null)
//{
db.Resultats.Add(resultat);
db.SaveChanges();
int id = resultat.IdResultat;
noteDiscipline.IdResultat = id;
db.NoteDisciplines.Add(noteDiscipline);
db.SaveChanges();
return RedirectToAction("Index");
//}
}
ViewBag.IdAnnee = new SelectList(db.AnneeAcademiques, "IdAnnee", "Intitule", resultat.IdAnnee);
ViewBag.IdApprennant = new SelectList(db.Apprenants, "IdApprenant", "Code", resultat.IdApprennant);
//return View("Error");
return View(resultat);
}
使用以上代码,我希望将一些标记从视图发送到控制器,并重定向到“索引”视图或其他“创建”视图。这在我的机器上可以正常工作,并且服务器上也有相同的代码,但是一旦我键入一些标记并按下注册按钮,我就会返回“错误”视图。 另一个奇怪的事情是,返回“错误”视图的代码行已被注释,但仍显示在服务器中。
答案 0 :(得分:1)
如果您将程序包托管到IIS服务器,请转到应用程序的基本设置,然后将物理路径更改为源代码,而不是构建程序包。然后从IIS运行您的应用程序,并将调试器保留在Visual Studio中的应用程序中。这样,您就可以从服务器运行应用程序时找出问题所在。
答案 1 :(得分:1)
实际上,您需要为ASP.Net应用程序配置IIS。在服务器上安装IIS时,只需选择所有asp.net选项。 请遵循此安装过程。我相信您将获得解决方案,并且该应用程序将作为本地计算机在服务器中运行。 https://www.logisofteducation.com/2018/08/how-to-install-iis-server.html