.NET Core i WCF - jak poprawnie disposować?

0

Tworząc aplikację w .NET Core chcę strzelać do usługi WCF. Poprzez Connected Service udało mi się podpiać usługę WCF, wygenerowało mi plik Reference.cs z metodami, typami itp., jest tam service który dziedziczy po ClienBase<T> który mogę stworzyć i strzelać do usługi jak poniżej:

var client = new wygenerowanyServiceClient(binding, endpoint);
client.Operacja(blablabla);

Jednak w przypadku podlączania ServiceReference w zwykłym .NET, wygenerowana klasa clienta posiadała też metodę Dispose więc clienta robiło się w sposób:

using(var client = new Client)

Jak poprawnie zatem disposować ClienBase w przypadku .NET Core gdy brak tej metody? Czy zamiast robienia ręcznie, wstrzykiwanie Clienta przez DI z lifecyclem per request rozwiązałoby problem?

0

Właśnie się natknąłem na wpis na blogu z przykładem jak używać wcf w net core:
Using SOAP security in dotnet core

0
neves napisał(a):

Właśnie się natknąłem na wpis na blogu z przykładem jak używać wcf w net core:
Using SOAP security in dotnet core

Dzięki za link, ale jaki ma to związek z moim tematem? W tym wpisie któy podlinkowałeś nic nie ma jak w NET Core powinno się poprawnie tworzyć i disposowac Clienty konsumując WCF

Jest tam:

var wsClient = new ServiceWebClient(
new BasicHttpBinding(BasicHttpSecurityMode.Transport),
new EndpointAddress(url));

Ale dalej nie widać tak naprawdę czy gdzieś ten wsClient disposowany czy cokolwiek z nim robione :/

0
error91 napisał(a):

Próbowałeś tego ?
https://docs.microsoft.com/en-us/dotnet/core/additional-tools/wcf-web-service-reference-guide

Dzięki za link, ale to jest dokładnie to narzędzie które wykorzystuje się do dodania usługi/WSDL. Dzieki niemu wygeneruje się wspomniany plik Reference.cs o którym pisałem. Problem jest jak potem wykorzystywać poprawnie klasę ClientBase z tego pliku, w zwykłym .NET miała ona metodę Dispose i robiło się ją po prostu w using (), w przypadku .NET Core wygenerowana klasa nie ma niestety tej metody.

0

Wklej kod żeby czytelnik nie musiał googlować za źródłami i narzędziami. Pewnie Dispose tam jest, tylko jest zaimplementowany explicite jak tutaj: https://github.com/dotnet/wcf/issues/2194
Po czym ten klient dziedziczy? Jeżeli po ClientBase to według dokumentacji https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.clientbase-1?view=netcore-1.1 metoda Dispose tam jest.

1 użytkowników online, w tym zalogowanych: 0, gości: 1