BasicHttpBinding HttpClientCredentialType.Basic с .NET MAUI и Android не работаетAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 BasicHttpBinding HttpClientCredentialType.Basic с .NET MAUI и Android не работает

Сообщение Anonymous »

У меня есть служба WCF, к которой я пытаюсь получить доступ через несколько платформ: консольное приложение Windows, .NET Maui iOS, .Net Maui Android. Я использую BasicHttpBinding. Мне нужно передать учетные данные в службу WCF.
Я могу заставить работать Android-клиент MAUI только в том случае, если использую ClientCredentialType = None, который не принимает учетные данные. Windows и MAUI iOS работают с ClientCredentialType = Basic. Мне нужно передать учетные данные, поскольку клиентские приложения ведут себя по-разному в зависимости от членства в группе аутентифицированного пользователя.
При отладке с платформы .NET MAUI Android получено следующее сообщение:
System.ServiceModel.Security.MessageSecurityException: «HTTP-запрос неавторизован при использовании схемы аутентификации клиента «Базовая». Заголовок аутентификации, полученный от сервера, имел вид «Basic Realm=""'».
Консоль Windows и платформа .NET MAUI iOS работают нормально.
Во время разработки и тестирования у меня есть клиент Android, использующий ClientCredentialType = None, поскольку это единственный режим, в котором я могу заставить приложение работать, но я приближаюсь к развертыванию, и мне нужны учетные данные, чтобы я мог настроить различные поведения, управляемые группой. которые работают на всех платформах.
В серверном приложении WCF я сейчас использую определение конечной точки, приведенное ниже, которое использует ClientCredentialType = None и работает на всех трех клиентских платформах, но не принимает учетные данные:
р>

Код: Выделить всё

        Dim binding As New BasicHttpBinding
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None
selfHost.AddServiceEndpoint(GetType(IWCF), binding, "WCFService")
Я хочу использовать определение конечной точки, приведенное ниже, но оно работает только на платформах Windows Console и .NET MAUI iOS и выдает ошибку при запуске с Android. Обратите внимание, что единственное отличие — это «HttpClientCredentialType.None»

Код: Выделить всё

        Dim binding As New BasicHttpBinding
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic
selfHost.AddServiceEndpoint(GetType(IWCF), binding, "WCFService")
В приложении .NET MAUI ссылка на службу, автоматически создаваемая утилитой dotnet-svcutil при использовании ClientCredentialtype = Basic, выглядит следующим образом:

Код: Выделить всё

    private static System.ServiceModel.Channels.Binding GetBindingForEndpoint(EndpointConfiguration endpointConfiguration)
{
System.ServiceModel.BasicHttpBinding result = new System.ServiceModel.BasicHttpBinding();
result.MaxBufferSize = int.MaxValue;
result.ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max;
result.MaxReceivedMessageSize = int.MaxValue;
result.AllowCookies = true;
result.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.TransportCredentialOnly;
result.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Basic;
return result;

}
В клиентских приложениях при вызове методов WCF с использованием CredentialType = Basic я раскомментирую следующие строки. Они закомментированы при использовании CredentialType = None

Код: Выделить всё

        client.ClientCredentials.UserName.UserName = "[username]"
client.ClientCredentials.UserName.Password = "[Password]"
В прошлом было опубликовано еще несколько подобных вопросов, и несколько человек заявили, что нашли решение, но НИ ОДИН из них на самом деле не опубликовал свое решение. Очень неприятно!
Если Android .NET MAUI требует совершенно другую аутентификацию, чем BasicHttpBinding, для передачи учетных данных, меня это устраивает, но я не могу найти никаких указаний о том, как это сделать.

Подробнее здесь: https://stackoverflow.com/questions/791 ... roid-not-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»