0

ここ数週間、毎朝 SMS を多数の携帯電話番号に送信する clickatell サービスを使用してきましたが、今日まで問題はありませんでした。

System.Net.WebException: 基になる接続が閉じられました: 送信時に予期しないエラーが発生しました。---> System.IO.IOException: リモート パーティがトランスポート ストリームを閉じたため、認証に失敗しました。

企業ネットワークの内側から送信しようとしましたが、その外側でも、モバイルデータ接続から送信しようとしても、毎回同じ応答が得られます。

Clickatell アカウントを確認したところ、まだ十分なクレジットがあり、統合が「オン」になっています。

何がうまくいかないのですか?

4

2 に答える 2

0

clickatell からの応答がないため、いろいろ調べてみたところ、このスレッドが見つかりました...

「基になる接続が閉じられました: 送信時に予期しないエラーが発生しました。」SSL証明書あり

私は.net 4を使用しているので、このコード行をclickatellから取得したRest Classに追加しようとしました...

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

このコードを追加すると、システムが再び機能するようになりました..

したがって、.net4 と REST API を使用している場合は、次のコードが必要です。

class Rest
{
    //This takes the API Key and JSON array of data and posts it to the Message URL to send the SMS's
    public static string Post(string Token, string json)
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://platform.clickatell.com/messages");
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";
        httpWebRequest.Accept = "application/json";
        httpWebRequest.PreAuthenticate = true;
        httpWebRequest.Headers.Add("Authorization", Token);

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }
        ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            return result;
        }
   }
}

これが他の誰かに役立つことを願っています....

于 2017-07-26T08:39:39.943 に答える
0

はい、SecurityProtocol は Transport Layer Security 1.2 でなければなりません (3072 は Tls12 SecurityProtocolType 列挙値です)。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

.net 4.6 では、Microsoft は ssl のセキュリティ制限をアップグレードしました。

さらに必要な場合は、これをお読みください: ServicePointManager o SslStream APIs in .net 4.6

申し訳ありませんが、この記事はイタリア語で書かれており、英語版は見つかりませんでした。

于 2017-07-29T04:27:27.827 に答える