ブログ熱の低下に伴い、ずるずると減っていくPV。
とうとう、見るのが辛くなってPVをツイートしなくしてしまったのは今年の春頃かしら。
曲がりなりにもサービス提供者なのにね。
そんな中、利用頂いている方から管理画面に入ろうとするとエラーになると連絡を頂きました。
もちろん、アプリ自体は何も触っていませんので、可能性としてはTwitter側の何らかの変更か・・・
じゃぁ、ローカルで実行を…と思ったら、PC再セットアップしてて環境無くなってた/(^o^)\
ということで、環境をごそごそして、CoreTweetのバージョン上げてみたり、Twitter側のアプリ設定を見直してみたりしてたのですが、原因は…
TLS 1.2で接続してなかったからでしたー\(^o^)/
この記事見てたのに、PVをツイートするサービスに影響がある事まで頭が回らなかったよ…
というわけで、TLS1.2が使えるように Application_Start に下記追加して対応完了
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
「ASP.NET Core MVC に作り直してもいいのかもしれんけどなぁ。チャリンチャリンしないサービスだしなぁ…」なんて久しぶりに思ったのでした。
おしまい。
おまけ
ちなみに、発生してたエラー(例外)はこんな感じ。WebClient使ったデータ送受信でも発生して対応したのになぁ、すっかり忘れていた…
[SocketException (0x2746): 既存の接続はリモート ホストに強制的に切断されました。] System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) +111 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +131 [IOException: 転送接続からデータを読み取れません: 既存の接続はリモート ホストに強制的に切断されました。。] System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +299 System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count) +32 System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) +164 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) +297 System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) +51 System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) +166 System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) +573 System.Net.TlsStream.CallProcessAuthentication(Object state) +44 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) +195 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) +22 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) +67 System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result) +803 System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size) +54 System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size) +105 System.Net.ConnectStream.WriteHeaders(Boolean async) +449 [WebException: 接続が切断されました: 送信時に、予期しないエラーが発生しました。。] System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) +963 System.Net.HttpWebRequest.GetRequestStream() +14 CoreTweet.Request.HttpPost(Uri url, String contentType, Byte[] content, String authorizationHeader, ConnectionOptions options) +315 CoreTweet.Request.HttpPost(Uri url, IEnumerable`1 prm, String authorizationHeader, ConnectionOptions options) +57 CoreTweet.OAuth.Authorize(String consumerKey, String consumerSecret, String oauthCallback, ConnectionOptions options) +512 TweetPvService.Controllers.TwitterController.Auth(String redirectUrl) in E:\Data\source\repos\tweetpvservice\TweetPvService\Controllers\TwitterController.cs:18 lambda_method(Closure , ControllerBase , Object[] ) +103 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14 (以下略)