2011-04-15 54 views
1

我新的MVC,做出我的本地機器(Windows 7中使用的SQLExpress)上工作的應用程序,但是當我部署活在Windows 2008 R2,SQL 2008 R2和IIS7,我得到這個錯誤:「對不起很抱歉,處理您的請求時發生錯誤。在MVC3模型實體

WEB.CONFIG的ConnectionStrings

add name="RentalEntities" connectionString="Data Source=[ServerName];Initial Catalog=[DatabaseName];Integrated Security=True" providerName="System.Data.SqlClient" 

的HomeController

namespace Rental.Controllers 

{ 

    RentalEntities rentalDB = new RentalEntities(); 

    ... 

    public ActionResult Index() 

{  

     var listings = from l in rentalDB.Listings 
        select l; 
     return View(listings.ToList());  
    } 
:,處理您的請求」

下面是有問題的代碼的隻言片語發生錯誤

HOME/INDEX.CSHTML

@model List<Rental.Models.Listing> 

@foreach (var listing in Model) 

{ 

    @listing.ListingName <br /> 

} 

在此行發生錯誤「@foreach(以型號VAR上市)」,是與被空 - 請注意在數據庫中的字段的這些都不是空。任何幫助將不勝感激。

以下是完整的錯誤消息:[其中線13是:foreach (var listing in Model)

對不起,在處理請求時發生了錯誤。

System.NullReferenceException:對象不設置爲一個對象的一個​​實例。在ASP._Page_Views_Home_Index_cshtml.Execute()在C:\的Inetpub \ wwwroot的\項目\酒店\查看\首頁\ Index.cshtml:13號線在System.Web.WebPages.WebPageBase.ExecutePageHierarchy()在System.Web.Mvc.WebViewPage System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext上下文)上System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,TextWriter writer,WebPageRenderingBase startPage)上的System.Web.WebPages.StartPage.ExecutePageHierarchy()上的.ExecutePageHierarchy()在System.Web.Mvc.ControllerActionInvoker。 <> C_ DisplayClass1c.b _19()在System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter濾波器,ResultExecutingContext preContext,函數功能1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList 1個過濾器,的ActionResult的ActionResult)在System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,字符串actionName)

回答

0

本案的情況是,你已經通過空值轉化爲index.cshtml模型。代碼是foreach'ing null

在PROD調試這樣的:

  • 多少行是在督促服務器上的上市表?
  • 請問您的LINQ to SQL的.dbml究竟指的是連接字符串中你的web.config,還是有埋在了.Designer.cs內隱藏的連接字符串?
  • 嘗試在INDEX.CSHTML設置一些調試信息

    @(Model==null) //will write to page whether the model data being passed is null. 
    

在開發/測試調試這樣的:

  • 爲了幫助調試爲什麼它是空,爲自己設定一個斷點該行在Index()。將其設置爲return View(listings.ToList());。它實際上是空嗎?然後在您的視圖中檢查null的設置斷點。

foreach之前,對空運行檢查:

@if (Model != null) 
{ 
    foreach (var foo in Model) 
    { 
     //your code 
    } 
} 
else 
{ 
    @: Model Is null! 
} 
+0

我做了以上的if else,它不喜歡的部分@ 「型號爲NULL!」。當我刪除它時,它運行並不顯示任何內容,這意味着模型爲空。這是爲什麼?我已經正確設置了數據庫和實體... – Charlako 2011-04-15 18:18:28

相關問題