我目前正在使用Entity Framework 4.3进行数据库访问的MVC 3网站上进行部署。
应用程序在Visual Studio开发服务器中按预期工作,但一旦将其部署到远程服务器,查询就会意外地做出反应
它应该显示一个排序列表和遍历该排序数据的页面
我尝试重新启动Web服务器和物理服务器计算机以确保缓存已经消失,甚至尝试在远程服务器上使用干净的IIS站点并获得相同的结果。
[编辑]:我也完成了删除并重新发布到一个干净的网站
在开发机器上
在远程服务器上
我用来生成表格的代码:
控制器的
[HttpGet]
public virtual ActionResult Index(string filter = "", int? page = null)
{
page = page ?? 1;
filter = filter.Trim().ToLower();
int pageSize = Properties.Settings.Default.DefaultSPPageSize;
int skipNum = (page.Value - 1) * pageSize;
IQueryable<SamplePoint> spList;
var points = new HashSet<string>(Settings.Default.SamplePointFilter.Split(','));
if (filter != "")
spList = db.SamplePoints.Where(e=>
points.Any(p=> e.Id.StartsWith(p))
&& e.Id.ToLower().Trim().StartsWith(filter.ToLower()))
.OrderBy(o => o.Id);
else
spList = db.SamplePoints.Where(e =>
points.Any(p => e.Id.StartsWith(p))
&& e.Id.Trim().StartsWith(filter)).OrderBy(o => o.Id);
List<SamplePoint> pageItems;
if (page != 0)
{
pageItems = spList.Skip(skipNum).Take(pageSize).ToList();
}
else
{
pageItems = spList.OrderBy(o=> o.Id).ToList();
}
int _totPages = Convert.ToInt32(pageSize > 0 ? Math.Ceiling(((double)spList.Count() / (double)pageSize)) : 0);
var vModel = new SamplePointListViewModel(pageItems, filter) { LocationList = FilterListItems, TotalPages = _totPages, CurrentPage = page.Value };
return View(this.IsExcelRequest() ? MVC.Reports.Views.Excel.SamplePointList : MVC.Reports.Views.SamplePointList, vModel);
}
答案 0 :(得分:0)
确保两台计算机上的ASP.NET MVC版本相同(dev / prod)。其他人got problems就是因为这个。
基本上,生产服务器的GAC中出现了较新的版本。
答案 1 :(得分:0)
一个简单的解决方案是实现某种日志记录,并将中间级别生成的输出写入日志文件。
如果您使用VS终极版,可以使用IntelliTrace进行拍摄。 (虽然我听说过,但我还没有使用过这个工具)
答案 2 :(得分:0)
spList = db.SamplePoints.Where(e=>
points.Any(p=> e.Id.StartsWith(p))
&& e.Id.ToLower().Trim().StartsWith(filter.ToLower()))
.OrderBy(o => o.Id);
从上面的代码中
e.ID 是您图片中的第一列吗?如果没有, e.Id 主键并且IdentitySeed设置为true?如果是这样,这是你的问题,因为它是自动生成的,这个ID在生产数据库和开发数据库中会有所不同,导致显示方式不同。
答案 3 :(得分:0)
两台服务器是否具有相同的区域设置?
您使用string.ToLover
和StartsWith
将根据当前文化执行转换。
您应该使用Invariant culture的这些方法的重载版本。