なか日記

一度きりの人生、楽しく生きよう。

PVをツイートするサービスの管理画面が動かなくなってた件

ブログ熱の低下に伴い、ずるずると減っていくPV。
とうとう、見るのが辛くなってPVをツイートしなくしてしまったのは今年の春頃かしら。
曲がりなりにもサービス提供者なのにね。

そんな中、利用頂いている方から管理画面に入ろうとするとエラーになると連絡を頂きました。

もちろん、アプリ自体は何も触っていませんので、可能性としてはTwitter側の何らかの変更か・・・

じゃぁ、ローカルで実行を…と思ったら、PC再セットアップしてて環境無くなってた/(^o^)\

ということで、環境をごそごそして、CoreTweetのバージョン上げてみたり、Twitter側のアプリ設定を見直してみたりしてたのですが、原因は…

TLS 1.2で接続してなかったからでしたー\(^o^)/

この記事見てたのに、PVをツイートするサービスに影響がある事まで頭が回らなかったよ…

forest.watch.impress.co.jp

というわけで、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
(以下略)