Я действительно не знаю, с чего начать этот вопрос, но сайт, над которым я работаю, временами имеет некоторые очень медленные загрузки страниц. Особенно после выполнения сборки, но не всегда. Обычно я должен обновить страницу 5-10 раз, прежде чем она на самом деле появится. Наверное, я пытаюсь понять, с чего именно начать.
ASP.NET MVC 3 Ninject AutoMapper Сущность Framework Code First 4.1 SQL Server 2008 Бритва
ОБНОВЛЕНИЯ
Что касается некоторых вопросов, он может делать эту длинную загрузку на каждой странице, но после того, как она загружает ее довольно быстро на всех страницах.
После публикации этого сообщения и получения ответов я запустил приложение, и он по-прежнему загружается и, вероятно, никогда не будет загружаться, если я не перезагружу его в браузере.
Нет кеширования, а модели EF не огромны.
Я использую Razor и Visual Studio 2010 с 6 ГБ памяти и I7-процессором.
Я использую IIS Express и веб-сервер по умолчанию при отладке. Он также делает это на IIS7 на главном сервере.
Я могу посмотреть в MVC Profiler и Glimpse, чтобы узнать, что я могу найти.
Ниже приведен код, который запускается, когда он попадает на главную страницу. Я бы сказал, что он никогда не загружается, когда я впервые запускаю сервер. Я поставил точку разрыва в var model, которая никогда не попадает. Если я перезагружаю страницу, то она делает.
public ActionResult Index()
{
var model = new HomeViewModel();
model.RecentHeadlines = _headlineService.GetHeadlines(1, Config.RecentHeadlinesPageSize, string.Empty);
return View(model);
}
Ниже приведена моя установка datacontext.
public class DatabaseFactory : Disposable, IDatabaseFactory
{
private DataContext _dataContext;
public DataContext Get()
{
return _dataContext ?? (_dataContext = new DataContext());
}
protected override void DisposeCore()
{
if (_dataContext != null)
_dataContext.Dispose();
}
}
public class Disposable : IDisposable
{
private bool isDisposed;
~Disposable()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (!isDisposed && disposing)
{
DisposeCore();
}
isDisposed = true;
}
protected virtual void DisposeCore()
{
}
}
public class UnitOfWork : IUnitOfWork
{
private readonly IDatabaseFactory _databaseFactory;
private DataContext _dataContext;
public UnitOfWork(IDatabaseFactory databaseFactory)
{
_databaseFactory = databaseFactory;
}
protected DataContext DataContext
{
get { return _dataContext ?? (_dataContext = _databaseFactory.Get()); }
}
public void Commit()
{
DataContext.Commit();
}
}