При разработване на нов проект, използвайки 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. Изберете раздела Отделни компоненти, превъртете надолу до Development Activities, изберете Windows Communication Foundation и натиснете Modify.
WCF създава два интерфейса по следния начин:
Кодът за реализация на интерфейса е следният:
Договорът за услуга е колекция от свързани операции на услугата, и когато приложим ServiceContractAttribute върху интерфейс, му даваме атрибут за договор за услуги. Въпреки това, за такъв тип неговият идиом не се превръща автоматично в договорна обслужваща операция и само когато се приложи функцията OperationContractAttribute, съответният член на метода може да се превърне в сервизна операция, достъпна чрез service call.
Когато стартирате проекта 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 binding и да редактираме отново Startup.cs файла, както следва:
Изтегляне на изходния код:
Туристи, ако искате да видите скритото съдържание на този пост, моля Отговор
|