繁体   English   中英

如何用C ++ / CLI编写此行?

[英]How to write this line in C++/CLI?

我正在使用Visual C ++调用Web服务。 由于出现此错误,我需要绕过无效的SSL证书-

请求失败。 基础连接已关闭:无法为SSL / TLS安全通道建立信任关系。

在C#中编写相同的内容时,我使用了这一行-

System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

它为我工作。

如何在Visual C ++中实现同一目标? 如何在Visual C ++中编写同一行?

您需要显式创建回调对象,并将其分配给相应的属性。

using namespace System;
using namespace System::Net;
using namespace System::Net::Security;
using namespace System::Security::Cryptography::X509Certificates;


static bool ValidateServerCertificate(
        Object^ sender,
        X509Certificate^ certificate,
        X509Chain^ chain,
        SslPolicyErrors sslPolicyErrors)
    {
        return true;
    }

int main(array<System::String ^> ^args)
{
    // create callback object, pointing to your function
    System::Net::Security::RemoteCertificateValidationCallback^ clb = gcnew RemoteCertificateValidationCallback(ValidateServerCertificate);
    // assign it to the property
    System::Net::ServicePointManager::ServerCertificateValidationCallback = clb;

    return 0;
}

VS 2010中的C ++ / CLI不支持lambda,因此您必须将委托编写为普通函数:

using namespace System::Net;
using namespace System::Net::Security;
using namespace System::Security::Cryptography::X509Certificates;

bool returnTrueCallback(
    Object^ sender, X509Certificate^ certificate, X509Chain^ chain,
    SslPolicyErrors sslPolicyErrors)
{
    return true;
}

...

ServicePointManager::ServerCertificateValidationCallback =
    gcnew RemoteCertificateValidationCallback(returnTrueCallback);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM