1

ubuntu ソフトウェア センターから monodevelop をインストールし、ソリューションを作成しました。WebRequest.create(url) を実行しようとしています。しかし、「認証または復号化に失敗しました」とスローされ続けます。私は何を間違っていますか?私が何も悪いことをしていない場合、上記の作業を行うにはどうすればよいですか!

これについて検索しましたが、問題を解決する解決策を思いつくことができませんでした!

これが私がすることです...

public static string AccessURL(string url, string postcontent)
    {
        WebRequest request = WebRequest.Create(url);
        request.Method = "POST";
        byte[] byteArray = Encoding.UTF8.GetBytes(postcontent);
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = byteArray.Length;
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        WebResponse response = request.GetResponse();
        dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string responseFromServer = reader.ReadToEnd();
        reader.Close();
        dataStream.Close();
        response.Close();
        return responseFromServer;
    }

前もって感謝します!

4

1 に答える 1

4

このエラーは、SSL/TLS 暗号化リソースにアクセスしようとしていることを示しています。Mono はデフォルトでこれらのサイトを信頼せず、そのリソースにアクセスするかどうかを決定するのは開発者次第です。詳細については、mono のセキュリティ FAQを参照してください。

したがって、これを行う 1 つの方法は、クラスに ServerCertificateValidationCallback を実装することです。

using System.IO;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;

public class MyAwesomeProgram
{
    public MyAwesomeProgram() 
    {
        ServicePointManager.ServerCertificateValidationCallback =
                ValidateServerCertficate;
    }

    private static bool ValidateServerCertficate(object sender, X509Certificate certificate,
        X509Chain chain, SslPolicyErrors sslpolicyerrors)
    {
        //This is where you should validate the remote certificate
        return true;
    }

    public void FetchAwesomeStuff (string url) 
    {
        var wr = WebRequest.Create (url);
        var stream = wr.GetResponse().GetResponseStream ();
        Console.WriteLine (new StreamReader (stream).ReadToEnd ());
    }
}

証明書ポリシーと信頼するルートの使用に関する mono ドキュメントには、さらに多くの例があります。上記のサンプルでは、​​セキュリティが無視され、信頼できない証明書も含めてすべての証明書が受け入れられることに注意してください。これを使用することはお勧めしません。

于 2012-09-21T09:02:59.880 に答える