我正在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。網)