Невозможно аутентифицировать мыльную веб-службу при добавлении через поставщика ссылок веб-службы Microsoft WCF в консольное приложение .NET Core 3 - PullRequest
0 голосов
/ 24 октября 2019

Я пишу консольное приложение .net core (3), используя Visual Studio 2019, и пытаюсь написать код на мыльном веб-сервисе. Однако мыльный веб-сервис требует аутентификации. Я использовал справочный провайдер веб-служб Microsoft WCF для [попытки] подключения к службе. Он запрашивает у меня учетные данные для входа, но когда я их набираю, он просто запрашивает меня снова [и снова, и снова]. Может ли ядро ​​.net работать с сервисами мыла? Я могу сделать это, когда пишу [очень простое] доказательство концепции .net приложения на том же компьютере, добавляя в приложение веб-ссылку. Однако в той же системе я не могу заставить его работать с ядром .net. Любая помощь высоко ценится.

спасибо, куча,

Дэвид

1 Ответ

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

Диалоговое окно постоянно запрашивается, поскольку сервер включает проверку подлинности Windows / Basic. Неважно, когда мы создаем клиентский прокси-сервер с помощью поставщика ссылок на веб-службы Microsoft WCF.
Следует отметить, что некоторые привязки не поддерживаются в проекте Asp.Net Core. Чтобы проверить этот результат, сначала мы вызываем службу в консольном приложении фреймворка Asp.Net (оно абсолютно поддерживает WCF), а затем проверяем автоматически сгенерированный файл конфигурации. режим привязки и аутентификации в файле конфигурации - это именно то, что использовал сервер. Наконец, перейдите в официальный репозиторий ниже, чтобы узнать, поддерживается ли он в проекте Asp.net Core.
https://github.com/dotnet/wcf
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.


Обновлено.
Вот пример конфигурации на стороне клиента. System.servicemodel в app.config - это то, что нас больше всего волнует.

    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://10.157.18.36:13100/Service1.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
                name="BasicHttpBinding_IService1" />
        </client>
</system.serviceModel>

Это указывает, что сервер использует basichttpbinding и использует режим аутентификации по умолчанию. эти конфигурации генерируются автоматически с помощью диалога добавления справочной службы. Для других классов нам не нужно слишком заботиться об их структуре, в основном это прокси-класс на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...