#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