2

プロジェクトでlibcurl.netを使用して、SSLを介してHTTPリクエストを実行しようとしています。(System.Netクラスはサーバー名拡張子をサポートしていません。私はWindows XPを使用しています)

SSLContextFunctionのコード:

public CURLcode OnSSLContext(SSLContext ctx, Object extraData)
{
    IntPtr ssl = SSL_new(ctx.Context);
    SSL_set_tlsext_host_name(ssl, "hostname");
    return CURLcode.CURLE_OK;
}

[DllImport("ssleay32.dll")]
internal static extern IntPtr SSL_new(IntPtr ctx);

[DllImport("ssleay32.dll")]
internal static extern void SSL_set_tlsext_host_name(IntPtr ssl, string message);

これにより、SSL_newの呼び出しで、「保護されたメモリの読み取りまたは書き込みを試みました。これは、他のメモリが破損していることを示していることがよくあります」というエラーがスローされます。

また、OpenSSLのメソッドSSL_library_init()を呼び出してみましたが、結果が得られませんでした。

ありがとう

4

1 に答える 1

0

使用しているライブラリに一致するようにCPUプラットフォームを設定しましたか?

私はそれを使用していませんが、libcurl の既存のラッパーを見つけました。これが役立つかもしれません: http://sourceforge.net/projects/libcurl-net/

于 2011-05-05T12:09:23.227 に答える