мы настроили службу WCF, которая использует контейнер Unity для разрешения экземпляров для управления командами Exchange 2010 Powershell. Мы определили интерфейс IExchangePowershell, который имеет конкретную реализацию, реализующую IDisposable. Через некоторое время мы столкнулись с проблемой, что мы больше не можем выполнять команды powershell, поскольку сервер сказал, что уже открыто слишком много сеансов powershell. Кажется, что мы никогда не избавлялись от наших экземпляров PowerShell. Метод Dispose () конкретного Powershell позаботится о закрытии пространства выполнения и сеанса. Когда я вызываю это в методах репозитория, мы больше не получаем ошибок.
((IDisposable)this.powershell).Dispose();
Теперь, конечно, я не хочу явно вызывать dispose в каждом методе репозитория. Я думал, что единство может позаботиться об этом. Наш поставщик экземпляров WCF делает это:
public void ReleaseInstance(InstanceContext instanceContext, object instance)
{
container.Teardown(instance);
}
Но в действительности это не относится к экземплярам IExchangePowershell. Ты хоть представляешь, как я могу автоматически избавиться от этих экземпляров?