Насколько это плохо, если я не закрываю прокси WCF/ASMX?
Так что кто-то (хорошо, это я) не понял, что вам нужно закрывать прокси WCF после их использования.
Насколько это плохо? Какие проблемы это может вызвать.
Есть ли задержка закрытия ресурсов из-за сборки мусора - или мне действительно нужно беспокоиться о преждевременной переработке пула приложений?
У меня на самом деле гораздо больше ASMX, чем у прокси WCF с этой проблемой - поэтому тот же вопрос касается и ASMX.
Очевидно, теперь, когда я знаю это, я собираюсь постепенно это исправить, но был бы признателен за информацию о том, насколько это плохо на самом деле?
3 ответа
Служба WCF имеет время ожидания по умолчанию. Если вы не закроете его, служба будет ожидать истечения времени ожидания.
WCF также имеет максимальное количество одновременных вызовов, значение по умолчанию 10.
Поэтому, если вы не закроете свои соединения, вы можете иметь только 10 звонков в минуту. (при условии настроек по умолчанию)
Вот кто-то с похожей проблемой:
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/d58ee1c6-032b-40f3-b734-6628f3991bb2/
Как общее руководство, когда вы хотите постепенно исправить это, не оборачивайте свои прокси оператором использования, я видел, что многие люди делают это, я делал это, пока не прочитал статью IDesign, в которой это может заставьте Dispose выдать исключение и замаскировать реальное исключение, явно закройте свой прокси в try/catch, если close вызывает исключение, используйте Abort для очистки ресурса.
РЕДАКТИРОВАТЬ: Как отмечено в комментарии ниже, это относится к прокси WCF.
Вы можете безопасно повторно использовать соединение WCF, просто позаботившись о том, чтобы проверить, не находится ли оно в неисправном состоянии.