Я действительно не знаю, с чего начать этот вопрос, но сайт, над которым я работаю, иногда имеет очень медленную загрузку страниц. Особенно после сборки, но не всегда. Мне обычно приходится обновлять страницу 5-10 раз, прежде чем она появится. Я думаю, что я пытаюсь увидеть, где именно я должен начать искать.
ASP.NET MVC 3
Ninject
AutoMapper
Entity Framework Code First 4.1
SQL Server 2008
Бритва
ОБНОВЛЕНИЕ
Что касается некоторых вопросов, он может выполнять эту долгую загрузку на каждой странице, но после того, как загружается достаточно быстро на всех страницах.
После публикации этого сообщения и получения ваших ответов я запустил приложение, оно все еще загружается и, вероятно, никогда не загрузится, пока я не нажму на перезагрузку в браузере.
Нет кэширования, а модели EF невелики.
Я использую Razor и Visual Studio 2010 с 6 ГБ памяти и процессором I7.
Я использую IIS Express и веб-сервер по умолчанию при отладке. Это также делается на IIS7 на главном сервере.
Я могу заглянуть в MVC Profiler и Glimpse, чтобы увидеть, что я могу найти.
Ниже у меня есть код, который запускается, когда он попадает на домашнюю страницу. Я бы сказал, что он никогда не загружается при первом запуске сервера. Я поставил точку останова на модели VAR, которая никогда не получает удар. Если я перезагружаю страницу, то это так.
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();
}
}