2015-10-01 4 views
12

PayPal REST APIに問題が発生しました。 (そしてサンドボックスでは100%稼働します)しかし、生きているシステム上では、生きているPayPalシステムに接続しています。私は時々フォローエラーを取得します。PayPal.ConnectionException:無効なHTTP応答:要求が中止されました:SSL/TLSセキュアチャネルを作成できませんでした

PayPal.ConnectionException: Invalid HTTP response: The request was aborted: Could not create SSL/TLS secure channel. at 
PayPal.Api.HttpConnection.Execute(String payLoad, HttpWebRequest 
    httpRequest) at PayPal.Api.PayPalResource.ConfigureAndExecute[T] 
    (APIContext apiContext, HttpMethod httpMethod, String resource, String 
    payload, String endpoint, Boolean setAuthorizationHeader) at 
    PayPal.Api.OAuthTokenCredential.GenerateOAuthToken() at 
    PayPal.Api.OAuthTokenCredential.GetAccessToken() 

基本的にはちょうどPayPalの

からアクセストークンを取得しようとしたとき、私は、最新バージョンへのSDKを更新しましたし、コードは喜んで3ヶ月間働いていたクラッシュ維持されます。

答えて

13

PayPalの接続が何らかの理由で解放されないことがあるようです。これは、1つのホストへの同時Web接続の数に.Netの制限があるため、エラーが発生します。その制限は2です。

PayPalに接続する前にこれを追加してください。 SDKやエクスプレスチェックアウトを使用している場合などです。

ServicePointManager.Expect100Continue = true; 
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 
ServicePointManager.DefaultConnectionLimit = 9999; 

//PayPay SDK connection 
var apiContext = Configuration.GetAPIContext(); 
+1

私は同じ問題を抱えていて、この解決策は私のために働いた。 –

+0

ありがとうございます。私の最後の数週間は一貫して失敗していました。これはうまくいった。 –

+0

私は同じ問題がありますが、Configuration.GetAcctAndConfig()を持ってDictionary 変数を返します。 githubの商人APIコードに従ってください。このコードで上記の設定を行う場所を教えてください。事前 –

2

私はペイパルテストアカウントで同様の問題があり、修正のためには、十分な前の回答からわずか1行:PayPalはSSLv3のためのサポートをドロップし始めているので、

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 
9

このエラーが発生しています。受諾された回答に関しては、PayPalの接続を再度有効にするには、Tls12設定のみが必要です。

私はコード全体にこの設定を実装する必要はありませんでした。私はこの設定をApplication_Start()という方法で私のglobal.asaxファイルにすることが最良の解決策であることを発見しました。

また、私のバージョン4.0 NETフレームワークは、私がSecurityProtocolType.Tls12フラグを使用することはできませんでした - それは私がこのようにそれをキャストした場合に動作します。私の最初の答えで

protected void Application_Start() 
{ 
    ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; // This is equivalent to SecurityProtocolType.Tls12 
} 
+0

です@ Jamesmaccormackこれを追加した後で新しいエラーが発生しています – Meer

+0

@Jamesmaccormackはエラーです[リンク](http://imgur.com/birP9jk) – Meer

+0

@MeerDeenあなたの問題は私のものとは関係がないので、回答。しかし、私はそれを見て、IPアドレスからの呼び出しを制限されていると信じています(ジオロケーションの制限)。参照:http://stackoverflow.com/questions/35663028/i-cant-configure-paypal-to-use-in-asp-net-mvc-application –

0

私は

を追加推奨しました
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

しかし、私のプロジェクトもAmazonサービスを使用しており、TLS12では機能しません。プロトコルのパックに置き換えるとうまくいく:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 
関連する問題