В веб-сервисе pre-WCF .NET (C#) у меня есть дорогостоящий ресурс IDisposable, на котором я держу ссылку на статический (на самом деле ThreadStatic). (Внутренне он содержит SqlConnection.) Как я могу гарантировать, что это будет доступно при обновлении пула приложений, должен ли я просто подавить предупреждение FxCop и не беспокоиться об этом, или есть третий вариант?Утилизация статических ресурсов в веб-службе
Первоначально служба открывала соединение по каждому запросу с использованием блока, но этот проект был отклонен из-за «проблемы с ресурсом подключения».
Очень хорошая точка. Я не выбрал новый дизайн. Что ты предлагаешь? – TrueWill
Вам необходимо пересмотреть проблему с подключением и посмотреть, какова фактическая проблема. Как правило, лучшим шаблоном является открытие соединения, выполнение операции и последующее его закрытие либо с помощью блока в соединении, либо - если вы возвращаете datareader, чтобы его можно было эффективно выполнять, datareader при использовании блок, созданный с помощью опции CloseConnection, так что утилита утилизации - это утилита соединения. Таким образом, «реальное» соединение возвращается в пул ASAP. Ваше изменение здесь усугубляет ситуацию, никогда не возвращая его. Где произошел неправильный шаблон? ... –
... может быть, произошли ошибки между созданием соединения для datareader (и, следовательно, не в использовании) и установкой datareader в использование? Такая ситуация может привести к утечкам (для этого я использую класс-оболочку, который будет удалять соединение в его распоряжении, но когда он успешно создаст datareader с опцией закрытия, «перестанет владеть» соединением, так как теперь это читатель, который будет закройте его. Еще один источник ошибок - если вы используете 'use' на datareader в блоке-интернаторе и, как ошибка или намеренно, никогда не вводите блок использования, потому что первый ... –