Podczas tworzenia nowego projektu, wykorzystując asp.net technologię rdzeniową, stary projekt może być usługą WCF opracowaną w .NET Framework 4, ponieważ koszt rekonstrukcji jest zbyt wysoki, konieczne jest użycie asp.net rdzenia do wywołania interfejsu usług WCF.
Po pierwsze, stwórz dwa nowe projekty:
ASP.NET Projekt Core 3.1: dotnet-core-call-wcf .NET Framework 4 projekt (aplikacja WCF service): schools-wcf-service
Visual Studio 2019 chce utworzyć usługę WCF, nie mogę znaleźć szablonu, rozwiązanie:
Wybierz Zainstaluj więcej narzędzi i funkcji, aby otworzyć instalator Visual Studio. Wybierz zakładkę Indywidualne Komponenty, przewiń w dół do Aktywności Rozwojowe, wybierz Windows Communication Foundation i kliknij Zmodyfikuj.
WCF tworzy dwa interfejsy w następujący sposób:
Kod implementacyjny interfejsu wygląda następująco:
Kontrakt usługowy to zbiór powiązanych operacji usługowych, a gdy stosujemy ServiceContractAttribute na interfejsie, nadajemy mu atrybut kontraktu usługowego. Jednak dla takiego typu jego idiom nie staje się automatycznie operacją usługową kontraktową, a dopiero po zastosowaniu funkcji OperationContractAttribute odpowiedni członek metody może stać się operacją usługową, do której można uzyskać dostęp przez wywołanie serwisowe.
Po uruchomieniu projektu wcf automatycznie uruchomi WcfTestClient i spróbuje go wywołać, jak pokazano na poniższym rysunku:
Użyj ASP.NET projektów podstawowych do wywoływania usług WCF
Kliknij prawym przyciskiem Connected Services, wybierz usługę, do której chcesz dodać połączenie, i wybierz usługę WCF, jak pokazano na poniższym obrazku:
Adres serwisowy wypełniony: http://localhost:3705/Service1.svc
Możliwe błędy:
Ponieważ niemożliwe jest zapisanie adresu usługi WCF do końca, dodaj następujący kod do pliku appsettings.json:
Edytuj plik Startup.cs i zarejestruj usługę WCF z następującym kodem:
Wywołaj usługę wcf na kontrolerze HomeController, pierwsze wstrzyknięcie konstruktora, kod wygląda następująco:
Dzwonienie do usługi WCF:
Korzystaj ze strony asp.net Core, efekt jest przedstawiony poniżej:
Staramy się zmodyfikować usługę WCF tak, aby interfejs zwracał wynik po 3 minutach, a następnie restartujemy asp.net rdzeń, aby wywołać usługę WCF, i błąd jest następujący:
AggregateException: One or more errors occurred. (The request channel timed out attempting to send after 00:01:00. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.) Obecnie musimy zmodyfikować domyślny timeout, dostosować binding BasicHttpBinding i ponownie edytować plik Startup.cs, w następujący sposób:
Pobranie kodu źródłowego:
Turyści, jeśli chcecie zobaczyć ukrytą zawartość tego wpisu, proszę Odpowiedź
|