Игнорировать ошибку проверки при вызове службы .NET Framework WCF из проекта .NET 6.0.C#

Место общения программистов C#
Anonymous
Игнорировать ошибку проверки при вызове службы .NET Framework WCF из проекта .NET 6.0.

Сообщение Anonymous »

У меня есть проект .NET Framework 4.8, который вызывает службу .NET 4.8 WCF. Я хочу использовать https, но на данный момент у меня есть только самозаверяющий сертификат, поэтому я просто игнорирую все ошибки проверки:

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

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;

var binding = new BasicHttpBinding()
{
SendTimeout = TimeSpan.FromMinutes(10),
MaxReceivedMessageSize = Int32.MaxValue,
};

binding.Security.Mode = BasicHttpSecurityMode.Transport;

using (var client = new SampleService(binding, new EndpointAddress("https://localhost/SampleService/Service.svc")))
{
var response = client.GetConfiguration();
}
Все работает нормально, но теперь я создал еще один проект с .NET 6.0, который вызывает ту же службу WCF. Теперь я получаю сообщение об ошибке:

Не удалось установить доверительные отношения для безопасного канала SSL/TLS с полномочиями «localhost».

Похоже на этот делегат:

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

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;
никогда не попадает, что вызывает проблемы. Проведя небольшое исследование, я попробовал, например, следующее:

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

using (var client = new SampleService(binding, new EndpointAddress("https://localhost/SampleService/Service.svc")))
{
client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication = new System.ServiceModel.Security.X509ServiceCertificateAuthentication()
{
CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None,
RevocationMode = System.Security.Cryptography.X509Certificates.X509RevocationMode.NoCheck
};
var response = client.GetConfiguration();
}
но для этого требуется System.IdentityModel.dll, который никогда не копируется в выходной каталог. Если я заставлю Visual Studio сделать это, она все равно покажет эту ошибку, и эта DLL не найдена. Есть идеи, что я могу здесь сделать?


Подробнее здесь: https://stackoverflow.com/questions/786 ... -a-net-6-0

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