При розробці нового проєкту з використанням asp.net основної технології старий проєкт може бути сервісом WCF, розробленим за допомогою .NET Framework 4, оскільки вартість реконструкції надто висока, необхідно використовувати asp.net ядро для виклику інтерфейсу сервісу WCF.
Спочатку створіть нові два проєкти:
ASP.NET Проєкт Core 3.1: dotnet-core-call-wcf Проєкт .NET Framework 4 (додаток WCF): schools-wcf-service
Visual Studio 2019 хоче створити сервіс WCF, не можу знайти шаблон, рішення:
Виберіть Встановити більше інструментів і функцій, щоб відкрити Visual Studio Installer. Виберіть вкладку «Окремі компоненти», прокрутіть вниз до «Розробки дій», виберіть Windows Communication Foundation і натисніть «Змінити».
WCF створює два інтерфейси наступним чином:
Код реалізації інтерфейсу виглядає так:
Сервісний контракт — це сукупність пов'язаних сервісних операцій, і коли ми застосовуємо ServiceContractAttribute до інтерфейсу, ми надаємо йому атрибут сервісного контракту. Однак для такого типу його ідіома не автоматично стає контрактною сервісною операцією, і лише при застосуванні функції OperationContractAttribute відповідний учасник методу може стати сервісною операцією, до якої можна отримати доступ через сервісний виклик.
Коли ви запускаєте проєкт wcf, він автоматично запускає WcfTestClient і намагається викликати його, як показано на рисунку нижче:
Використовуйте ASP.NET Core проєкти для виклику служб WCF
Клацніть правою кнопкою миші «Підключені сервіси», виберіть сервіс, до якого хочете додати з'єднання, і виберіть сервіс WCF, як показано на наступному зображенні:
Адреса послуги заповнена: http://localhost:3705/Service1.svc
Можливі помилки:
Оскільки неможливо записати адресу сервісу WCF до кінця, додайте до appsettings.json файлу наступний код:
Відредагуйте Startup.cs файл і зареєструйте сервіс WCF за наступним кодом:
Викликайте сервіс wcf на контролері HomeController, перша ін'єкція конструктора, код виглядає так:
Виклик до служби WCF:
Запустіть сайт asp.net Core, ефект показаний нижче:
Ми намагаємося змінити сервіс WCF так, щоб інтерфейс повертав результат через 3 хвилини, а потім перезапускаємо asp.net ядро, щоб викликати сервіс WCF, і помилка така:
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.) У цей момент потрібно змінити стандартний тайм-аут, налаштувати зв'язок BasicHttpBinding і повторно відредагувати Startup.cs файл наступним чином:
Завантаження вихідного коду:
Туристи, якщо ви хочете побачити прихований контент цього допису, будь ласка Відповідь
|