У меня есть служба 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
Спасибо