Sql 很抱歉,处理您的请求时出错。在MVC3模型实体中

Sql 很抱歉,处理您的请求时出错。在MVC3模型实体中,sql,asp.net-mvc-3,iis-7,model,Sql,Asp.net Mvc 3,Iis 7,Model,我是MVC新手,制作了一个可以在本地机器Windows 7上使用SQLExpress的应用程序,但当我在Windows 2008 R2、SQL 2008 R2和IIS7上部署live时,我收到了以下错误:抱歉,处理您的请求时出错 下面是有问题的代码片段: WEB.CONFIG连接字符串 add name="RentalEntities" connectionString="Data Source=[ServerName];Initial Catalog=[DatabaseName];Integr

我是MVC新手,制作了一个可以在本地机器Windows 7上使用SQLExpress的应用程序,但当我在Windows 2008 R2、SQL 2008 R2和IIS7上部署live时,我收到了以下错误:抱歉,处理您的请求时出错

下面是有问题的代码片段:

WEB.CONFIG连接字符串

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

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 />     
}
@(Model==null) //will write to page whether the model data being passed is null.

这里发生的事情是,您将一个空值传递到index.cshtml的模型中。 该代码在null上进行赋值

在Prod中调试此文件:

Prod服务器上的列表表中有多少行? 您的LINQ To SQL.dbml是否准确引用了web.config中的连接字符串,还是在.designer.cs中隐藏了一个连接字符串? 尝试在INDEX.CSHTML上设置一些调试信息

@model List<Rental.Models.Listing>

@foreach (var listing in Model)    
{    
    @listing.ListingName <br />     
}
@(Model==null) //will write to page whether the model data being passed is null.
在Dev/Test中调试:

要帮助调试它为什么为空,请在索引中的行上为自己设置断点。在return Viewlistings.ToList;上设置它;。它实际上是空的吗?然后在视图中检查null时设置断点。 在foreach之前,运行空值检查:

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

我做了上面的if-else,它不喜欢@Model部分为null!。当我删除它时,它运行并没有显示任何内容,这意味着该模型为空。为什么呢?我已经正确地设置了数据库和实体…@Charl:请查看关于您的.dbml的更新。我假设您使用的是LINQ To SQL,而不是EF。请详细说明您的最后一条评论,我不明白您所说的查看.dbml更新是什么意思。正如您在上面的控制器上看到的,我使用了实体:rentalenties rentalDB=new rentalenties;所有这些都在我的开发人员和我的朋友的本地计算机上工作。。。我对MVC非常陌生。@Char:我的意思是我已经更新了我的答案,加入了一个关于.dbml的项目符号。这都是关于.dbml使用的连接字符串。查看您的.dbml.designer.cs文件。它是否在第一个构造函数中嵌入了连接字符串?请看这里: