VB.NET WCF с использованием HTTP и HTTPS, обнаружение 302 - PullRequest
0 голосов
/ 18 января 2019

У меня есть служба WCF, которая расходуется через HTTP и HTTPS. Мы включили поддержку HTTP для локального тестирования, как для http://localhost/, так и для работы по сети с WireShark для анализа трафика. Мы хотим развернуть код в дикой природе через HTTPS. У нас есть правила перезаписи URL, так что если кто-то выберет http://foo.example.org, они будут перенаправлены через 302 на https://foo.example.org,, и это работает. В прошлом .NET расстраивался из-за 302 и отправлял сообщение об ошибке - теперь ему нравится абстрагироваться от вас и просто работать. Это означает, что теперь мы сталкиваемся с проблемой, когда нас перенаправляют, поскольку нам пришлось изменить режим безопасности привязки на None при использовании HTTP и Transport при использовании HTTPS.

Есть ли способ определить, какой режим безопасности нам нужно использовать, основываясь на том, что на самом деле делает соединение, а не наивном подходе, который у нас есть в настоящее время?

Public Sub DeterminineBindingSecurity(ByRef MyBinding As BasicHttpBinding, EndpointAddress As String)
    Select Case EndpointAddress.Split(":").First
        Case "https"
            MyBinding.Security.Mode = BasicHttpSecurityMode.Transport
            MyBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None
        Case Else
            MyBinding.Security.Mode = BasicHttpSecurityMode.None
            MyBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None
    End Select
End Sub

Спасибо

1 Ответ

0 голосов
/ 21 января 2019

Я решил это. Прежде чем сделать что-либо из этого, я использую System.Net.Http.HttpClient для запроса URL-адреса конечной точки и обновления URL-адреса

URL = (Await (New Net.Http.HttpClient()).GetAsync(URL)).RequestMessage.RequestUri.ToString
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...