2010-12-01 2 views
2

В старые времена (.net framework 3.5) нам нужно быть осторожным, чтобы закрыть прокси-серверы WCF.WCF 4 закрыть клиентский прокси

В WCF 4 Закрытие недоступно от клиента. Но он доступен внутри прокси.

public class ServiceProxy : System.ServiceModel.ClientBase<IService>, ILoginService 
{ 
} 

Закрытие клиентского прокси-сервера больше не требуется? Или как мы это делаем?

+0

Я не уверен, что ты Я просто создал образец службы WCF и клиента (как .NET 4), так и класс клиента в прокси (`ServiceReference1.Service1Client`) имеет те же методы` Close() `и` Abort() `, которые он сделал в .NET 3.5. – 2010-12-01 11:23:18

ответ

2

Прокси-сервер WCF должен быть явно закрыт, и если вы используете оператор using(), у вас есть возможность потерять исходное исключение. Подробнее об этой проблеме вы можете найти в следующих сообщениях.

От: http://geekswithblogs.net/SudheersBlog/archive/2009/09/01/134430.aspx

http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/b95b91c7-d498-446c-b38f-ef132989c154 http://geekswithblogs.net/marcel/archive/2007/05/01/112159.aspx

Это рекомендуемая практика всегда закрыть прокси, когда клиент делается с ним, потому что закрытие прокси завершает сеанс службой и закрывает соединение.

Кроме того, вы можете использовать метод Dispose() для прокси-сервера, чтобы закрыть его. Преимущество метода Dispose() является то, что вы можете использовать с помощью заявления назвать это даже в условиях исключения

проверочных

http://geekswithblogs.net/SoftwareDoneRight/archive/2008/05/23/clean-up-wcf-clients--the-right-way.aspx

http://geekswithblogs.net/bcaraway/archive/2008/07/06/123622.aspx

+0

Спасибо, оказалось, что это недостающая ссылка на system.servicemodel в бизнес-слое. – 2010-12-02 08:06:32