我正在MVC中创建一个web应用程序,当它在本地运行时很好。我最近将它部署到Azure,并遇到了一些问题。我创建了一个Area并忘记添加一个web.config文件和_viewStart.cshtml。asp.net MVC页面在web服务器上失败,但在本地机器上运行良好
一旦这些文件被添加,应用程序一直工作正常,除了一页。当我导航到编辑页面时,页面将显示“处理请求时发生的错误”,其中renderbody()部分将出现在此处。
控制器:
public ActionResult EditTest(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
ROUND_DETAILS rOUND_DETAILS = db.ROUND_DETAILS.Find(id);
if (rOUND_DETAILS == null)
{
return HttpNotFound();
}
return View(rOUND_DETAILS);
}
视图(小版)
@model TM470FinalProject.Areas.GolfApp.Models.ROUND_DETAILS
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
<div>
@Html.ActionLink("Back to List", "Index")
@Model.TEE.GOLF_COURSE.COURSE_NAME
</div>
<table class="table form-group">
<tr>
<th>Hole Number </th>
@for (var i = 0; i < 9; i++)
{
<th>@Model.HOLE_SCORE.ElementAt(i).HOLE_NUMBER</th>
}
</tr>
</table>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
,我已经看到似乎没有什么意义我的应用程序工作中的其他页面的信息:
The type or namespace TM470FinalProject could not be found (are you missing a using directive or reference assembly).
而且
The name 'model' does not exist in the current context.
对于上面的例子:如果我在考虑到上述消息仍然存在删除表,但@Model.TEE.GOLF_COURSE.COURSE_NAME
显示过程的名称作为我期望。
我相信这个问题是ElementAt(i)
代码:
@Model.HOLE_SCORE.ElementAt(i).HOLE_NUMBER
这是我不明白为什么它是失败的,因为我有一个使用类似的代码,并能正常工作的另一个视图(但在web服务器仍然标记上面的2条消息)。
当我在本地机器上写入Razor视图时,intellisense给了我ElementAt选项。
查看:
@model TM470FinalProject.Areas.GolfApp.Models.TEE
@{
String s = ViewBag.golfcourse.COURSE_NAME;
int ttlPar;
int ttlYards;
}
@{
ViewBag.Title = "Edit Tee: " + s ;
}
<h2>@s</h2>
<h3>Edit Tee: @Model.TEE_NAME </h3>
<table class="table">
<tr>
<th>Hole Number </th>
@for (var i = 0; i < 9; i++)
{
<th> @Model.HOLE_DETAILS.ElementAt(i).HOLE_NUMBER</th>
}
</tr>
</table>
在我的模型,他们也有类似的定义:
public virtual ICollection<HOLE_SCORE> HOLE_SCORE { get; set; }
public virtual ICollection<HOLE_DETAILS> HOLE_DETAILS { get; set; }
当我调试器附加导航到第一,当我得到以下输出查看:
Exception thrown: 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' in Microsoft.CSharp.dll
Exception thrown: 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' in System.Core.dll
Exception thrown: 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' in System.Web.Mvc.dll
我的看法webconfig显示:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="TM470FinalProject" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
<system.web>
<compilation>
<assemblies>
<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
</system.web>
它本地工作,并在Web服务器上一个页面正常工作与类似的代码,所以我茫然地解释为什么这正在发生。
我将不胜感激任何帮助/解决这个问题的方向。另外,你知道如何检索堆栈跟踪调试器生成的异常吗? (Im新到asp。网)