WebSocketでFW4.5でも500エラーを吐くトラブル

過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです. 画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.

IIS+ASP.NETにて、WebSocketを利用しようと試行錯誤してもずっと500エラーが起こるトラブルについて、2日間ぐらいつまづいてしまったものの解決したのでメモ。

状況

まずトラブルの状況ですが、ほとんど機能がなくてエラーが発生するポイントがほぼ皆無の状況、コンパイルエラーが起こるわけでもなく、AcceptWebSocketRequestの段階でエラーが起こっているものです。
ちなみにエラーの詳細はこんな感じ。

System.InvalidOperationException: WebSockets は現在のアプリケーション構成ではサポートされていません。 これを有効にするには、Web.config で次の構成スイッチを設定します:
<system.web>
  <httpRuntime targetFramework="4.5" />
</system.web>
詳細については、http://go.microsoft.com/fwlink/?LinkId=252465 を参照してください。
   場所 System.Web.HttpContext.AcceptWebSocketRequest(Func`2 userFunc, AspNetWebSocketOptions options)
   場所 socket.ProcessRequest(HttpContext context) 場所 http://server/ws/socket.ashx:行 27
[

ここで書かれている.NET FW 4.5へのスイッチのことですね。ちゃんとweb.configにも記述してるのに全然動作しません。
サーバー側に4.5はインストールされています。マネージパイプは統合のままです。正直問題点が見つかりません。

解決策

問題はWebSocketがx64で動作しないところに問題があったようです。なので、アプリケーションプールのほうにて、x86での動作を許可してあげましょう。
iis-app-option
 
これで解決です。というかこんなことあるんですね。しかもこれで解決しちゃうところも少し腹立たしい。