Ubuntu 12.04(Precise Pangolin)とMonoを使用して、C#2.0で記述およびコンパイルされたクライアントアプリケーションを正常に参照し、ローカル開発サーバー上のWebサービスを呼び出しましたが、更新しません。次のようなURLへの呼び出し
https://192.168.1.22/service.asmx
次に、このWebサービスを同じ構成でAmazon EC2の本番サーバーにアップロードしますが、Ubuntu12.04を更新します。クライアントアプリケーションでは、URLをに変更するだけhttps://myserver.com/service.asmx
です。
しかし、私のクライアントアプリケーションは接続できませんでした。デバッグメッセージは次のように表示されました。
トランスポートストリームから予期しないEOFまたは0バイトを受信しました。
WebブラウザでWebサービスの説明ページを開くと、Webサービスが正常に機能していることを意味します。
私はこれを修正するのに1時間かかりましたが、運がありませんでした。最後に、2台のサーバーの違いを見つけました。
ブラウザでは、ローカルサーバーのSSL接続はTLS 1.0を使用していますが、EC2サーバーのSSL接続はTLS1.1を使用しています。グーグルで検索したところ、.NETFramework2.0はTLS1.0とそれのみをサポートしていることがわかりました。
Apache2でTLS1.1を無効にする方法が見つかりませんでした。
これがUbuntu12.04のOpenSSLのバグなのか、Monoまたは.NETのバグなのかわかりません。私はまだ解決策を見つけようとしています。