структура структуры объекта 4 соединения - PullRequest
0 голосов
/ 02 ноября 2010

Я использую следующий код начальной загрузки Structuremap для моей структуры сущностей 4:

x.For<XEntities>().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.PerRequest)).Use(() => new XEntities());

Но когда я делаю два почти одновременных запроса, я получаю следующее исключение:

EntityException:The underlying provider failed on Open.
{"The connection was not closed. The connection's current state is connecting."}

Я использую ASP.NET MVC 2, в моем Application_Start () есть следующее EndRequest + = новый EventHandler (MvcApplication_EndRequest);

void MvcApplication_EndRequest(object sender, EventArgs e)
{
    ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
}

Что я могу сделать, чтобы это исправить?

[править] это происходит на странице с несколькими изображениями. Изображения поступают из базы данных и обслуживаются действием контроллера, которое считывает изображение из базы данных и отправляет его в виде файла в браузер. Я думаю, что asp.net нарушает мой объектный контекст и закрывает мое соединение с БД, когда поступают запросы на изображения и выдается исключение.

То, что мне сейчас нужно, - это правильный способ правильно управлять временем жизни контекста объекта.

1 Ответ

2 голосов
/ 02 ноября 2010

Почему вы назначаете делегата для EndRequest в Application_Start ()?

Просто подключитесь непосредственно к событию:

protected void Application_EndRequest()
{
    ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
}

Кроме того, я никогда раньше не использовал этот синтаксис, вот как я это делаю:

For<XEntities>().HybridHttpOrThreadLocalScoped().Use<XEntities>()

Кроме того, в какой момент вы обновляете свой контекст данных? Можете показать какой-нибудь код?

...