Как использовать веб-службу WCF в приложении Winform из библиотеки DLL - PullRequest
0 голосов
/ 23 октября 2019

У меня есть требование, когда мне нужно использовать службу (ASMX или WCF) в классе, тогда мне нужно использовать этот класс в приложении Winforms, чтобы получить ответ от службы.

Но проблема возникает какконфигурация класса (который потребляет службу) в app.config будет загружена в app.config, и этот файл конфигурации не будет прочитан, если в приложении указана dll.

С учетом следующегоошибка:

Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт «MyServices.IService» в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации или из-за того, что в клиентском элементе не найден элемент конечной точки, соответствующий этому контракту.

1 Ответ

0 голосов
/ 24 октября 2019

Да, как вы сделали. Файл app.config в проекте библиотеки не может быть распознан приложением Winform.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/deploying-a-wcf-library-project
Существует два решения этой проблемы: одно переносит конфигурацию в проекте библиотеки на практический проект (Приложение Winform), в основном, раздел system.servicemodel в конфигурации. Другое дело, что мы жестко закодировали конфигурацию сервиса в сегментах кода, мы вызываем сервис с помощью Channel Factory. Учитывая приведенный ниже код на стороне клиента.

   class Program
    {
        static void Main(string[] args)
        {
            BasicHttpBinding binding = new BasicHttpBinding();
            Uri uri = new Uri("http://10.157.13.69:18888");
            ChannelFactory<IService> factory = new ChannelFactory<IService>(binding, new EndpointAddress(uri));
            IService service = factory.CreateChannel();
            var result = service.GetData();
            Console.WriteLine(result);

        }
    }
    [ServiceContract]
    interface IService
    {
        [OperationContract]
        string GetData();
}

О ChannelFactory.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/channel-factory
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-use-the-channelfactory
Не стесняйтесь, дайте мне знать, если есть что-тоЯ могу помочь с.

...