Связь WCF в netstandard2.0 (IServiceBehavior и другие классы, которые не поддерживаются)

#wcf #.net-core #service #.net-standard-2.0

#wcf #.net-core #Обслуживание #.net-standard-2.0

Вопрос:

У меня есть группа сервисов, которые написаны на WCF. Это целая логика, которая не может быть изменена и переписана на другую технологию.

Я хочу создать приложение в .NET Core 2.1 и подключиться к службам WCF. Я использую библиотеку, в которой есть клиенты для всех служб с пользовательской связью, привязками, поведением конечных точек и т. Д. Эта библиотека написана в .NET Framework версии 4.7.2, поэтому, если я хочу использовать ее в своем приложении .NET Core, мне нужно добавить target в .net standard 2.0.

Я сделал это, и теперь у меня возникла проблема, поскольку некоторые классы не поддерживаются в .netstandard2.0.

 public class UserInfoBehavior : Attribute, IServiceBehavior, IEndpointBehavior
{}
  

Например, приведенный выше класс используется для добавления EndpointBehaviors в мой канал:

 public DashboardServiceClient(InstanceContext instanceContext, string endpointConfigurationName, string endpointAddress)
        : base(instanceContext, endpointConfigurationName, endpointAddress)
{
       base.ChannelFactory.Endpoint.EndpointBehaviors.Add(new UserInfoBehavior());
}
  

Проблема в том, что IServiceBehavior недоступен в .netstandard 2.0. Знаете ли вы какой-нибудь эквивалент для этого? Есть еще классы, которые я использую и которые не поддерживаются:

  • RemoteEndpointMessageProperty,
  • Метод Open(), который находится в клиентской базе,
  • ChannelDispatcher,
  • а также EndpointDispatcher, который является пустым классом в системе.ServiceModel.Диспетчер

Мне интересно, можно ли настроить его на netstandard

Комментарии:

1. Привет, могу я узнать, как сейчас решается проблема? Если у вас нет других вопросов, пожалуйста, не забудьте отметить ответ.

Ответ №1:

Вы можете вызвать службу wcf, добавив ссылку на подключение. введите описание изображения здесьВыберите поставщика ссылок на веб-службы WCF. введите описание изображения здесьВведите свой URI службы WCF: введите описание изображения здесьПроверьте все кавычки и завершите. введите описание изображения здесьВы можете увидеть эту папку в клиенте.

введите описание изображения здесь

Просто вызовите его в клиенте, и вы сможете получить доступ к методу в службе WCF.

  static void Main(string[] args)
    {
        ServiceReference2.Service1Client service1Client = new ServiceReference2.Service1Client();

        var t=service1Client.GetDataAsync(15);
        Console.WriteLine(t.Result); 
        Console.ReadKey();
    }
  

Вы также можете обратиться к этой ссылке для вызова службы wcf:
Используйте инструмент поставщика ссылок на веб-службы WCF