Mam prostą usługę WCF, z którą komunikuję się asynchronicznie.Połączenia WCF przekraczające maksymalne połączenia podczas korzystania z asynchronicznego wzorca
To, co nie podoba się, gdy wywołanie EndServiceMethod(IASyncResult)
Jeśli zapomnę wywołać metodę Close()
, usługa będzie faktycznie zostawić otwarte połączenie, a następnie wszystkie pozostałe połączenia nie powiedzie się po WCF osiągnie to max liczba jednoczesnych połączeń z wyjątkami limitu czasu.
Próbowałem przy użyciu atrybutu do umowy o świadczenie usług, które nie wydają się mieć żadnego wpływu na stan połączenia z usługą [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
.
Być może wprowadziłem go niepoprawnie?
Wszelkie pomysły i sugestie.
Próbuję zlokalizować wzór zachowania dla WCF, który pozwala klientom na żądanie, a następnie serwer, aby odpowiedzieć na żądanie, a następnie założyć, że połączenie zostało zakończone i może zostać zakończone.
Byłem zamykając go w uchwycie zwrotnej i że wydaje się działać. Chyba miałem nadzieję na bardziej eleganckie rozwiązanie, które pozwala tej pracy dzielić się po stronie serwera. – Beta033
To jest właściwie najlepsze rozwiązanie. W zależności od kodu może być w stanie policzyć liczbę procedur obsługi wywołań zwrotnych i liczbę razy, kiedy zadzwoniłeś i zobaczysz, czy pasują do siebie. –
Z wyjątkiem tego, że będę miał wielu klientów, z których każdy może mieć wiele połączeń. jak to zrobić publiczne usługi wcf? Nie mogę sobie wyobrazić, że spodziewają się, że ich klienci zawsze będą dobrzy pod względem zamykania połączeń, gdy skończą. – Beta033