При разработке нового проекта с использованием 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 файл следующим образом:
Скачать исходный код:
Туристы, если вы хотите увидеть скрытое содержание этого поста, пожалуйста Ответ
|