In meiner App verwende ich RestSharp, um eine REST-API abzufragen, und System.Net.Mail, um E-Mails zu senden. Beim Programmstart habe ich die ServicePointManager.SecurityProtocol-Eigenschaft festgelegt.
Wenn ich die Eigenschaft auf Folgendes setze:
%Vor%Beim Abfragen der API mit RestSharp wird eine Ausnahme ausgelöst:
%Vor%Wenn ich die Eigenschaft auf Folgendes setze:
%Vor%Beim Senden von E-Mails mit System.Net.Mail wird eine Ausnahme ausgelöst:
%Vor%Wie soll ich dieses Problem lösen?
Der REST-API-Server und der Mail-Server, mit dem Sie eine Verbindung herstellen, haben anscheinend widersprüchliche Sicherheitsprotokollanforderungen. Sie müssen verschiedene Sicherheitsprotokolleinstellungen für sie verwenden.
ServicePointManager.SecurityProtocol ist statisch und sein aktueller Wert gilt für alle neuen Verbindungen. Es gibt leider keine Möglichkeit, diese Einstellung per Servicepoint zu steuern . (Meiner Meinung nach ist das ein Designfehler von Microsoft)
Wenn Sie die Kontrolle entweder der REST-API-Server oder den Mail-Server haben, dann könnten Sie vielleicht neu konfigurieren sie nicht in Konflikt Sicherheitsprotokolle zu übernehmen.
Andernfalls könnten Sie neu gestalten Ihren Code so, dass alle Verbindungen zu dem REST-API und der Mail-Server aus zwei getrennten gemacht werden Anwendungsdomänen .
Zum Beispiel lassen Sie die Standard-App-Domain alle REST-API-Kommunikation umgehen und eine separate Anwendungsdomäne laichen, die alle Mail-Kommunikation der Fall ist.
Mit diesem Setup können Sie verschiedene Servicepoint verwenden .SecurityProtocol Werte in jeder Domäne. (Da statische Werte nicht zwischen App-Domänen geteilt werden).
Tags und Links .net c# restsharp system.net.mail