2011-04-15 17 views
1

ローカルマシン(Windows 7ではSQLExpress)で動作するアプリケーションをMVCで新しくしましたが、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リスト)」この行にはnullであることに何か起こった - データベース内のフィールドのどれがヌルではないことに注意を。どんな助けもありがとう。

以下は、完全なエラーメッセージです:[ライン13がどこにあるか:foreach (var listing in Model)

申し訳ありませんが、あなたのリクエストを処理中にエラーが発生しました。

System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 c:\ inetpub \ wwwroot \ projects \ Rentals \ Views \ Home \ Index.cshtmlのASP._Page_Views_Home_Index_cshtml.Execute()でSystem.Web.WebPages.WebPageBase.ExecutePageHierarchy()のSystem.Web.Mvc.WebViewPageの13行目System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContextコンテキスト)のSystem.Web.Web.WebPages.StartPage.ExecutePageHierarchy()の.ExecutePageHierarchy()System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriterライター、WebPageRenderingBase startPage) System.Web.Mvc.ControllerActionInvokerにあります。 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext、でSystem.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilterフィルタ、ResultExecutingContext preContext、のFunc 1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList 1フィルタ、のActionResultのActionResult)で<> C_ DisplayClass1c.b _19() String actionName)

答えて

0

ここでは、index.cshtmlのモデルにnull値を渡したことがあります。 コードはforeach'ing nullです。

製品版でこれをデバッグ:

  • のProdサーバー上のリストのテーブルにどのように多くの行がありますか?
  • LINQ To SQL .dbmlは、web.config内の接続文字列を正確に参照していますか、または.designer.cs内に埋め込まれた隠れた接続文字列を持っていますか?
  • @(Model==null) //will write to page whether the model data being passed is null. 
    

INDEX.CSHTMLにいくつかのデバッグ情報を設定する開発/テストでこれをデバッグしてみてください。それがnullだ理由

  • は、デバッグを支援するためには、上の自分のためにブレークポイントを設定しましたIndex()の行。 return View(listings.ToList());に設定してください。それは実際にはnullですか?次に、ビュー内でnullのチェックにブレークポイントを設定します。 foreach

、ヌルのチェックを実行します。

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

他の場合、私は上記をした、とその部分の@のように、それはしませんでした「モデルがNULLであります!」。私がそれを削除すると、実行され、何も表示されません。これは、Modelがnullであることを意味します。何故ですか?私はデータベースとエンティティを正しく設定しました... – Charlako

+0

@Charl:.dbmlに関するアップデートを参照してください。私はLINQ To SQLを使用していて、EFは使用していないと仮定しています。 –

+0

最後のコメントを詳しく教えてください。「あなたの.dbmlについての更新を見てください」と言ったときの意味を理解できません。上記のコントローラで見られるように、エンティティを使用しました。RentalEntities rentalDB = new RentalEntities();これはすべて私の開発者と私の友人のコンピュータでローカルに働いていました...私はMVCで非常に新しいです。 – Charlako

関連する問題