Windows Server 2016 で WCF Data Services
Windows Server 2008 で動いていた WCF Data ServicesアプリケーションをWindows Server 2016に載せ替えたので、メモを残しておく。
WCF Data Servicesアプリケーションを発行し、アクセスすると404エラーが発生する
WCF Data Servicesの拡張子「.svc」がIISに認識されていないという事が以下のブログでわかった。
Publishing a WCF service on IIS 8gyorgybalassy.wordpress.com
直接設定すれば動きそうだけど、画面から設定できるのではないかと思って調査を続けたところ、Windows Serve 2012での設定内容を書いたブログがあった。WCF Data ServicesはHTTPで通信するので良さそう。
検索キーワード(HTTPアクティブ化)がわかったので、Windows Server 2016の設定を探したところ、以下の複数のサイトが見つかったので書かれていた設定を行うことで、404エラーを無くすことが出来た。
.NET Framework 4.7が入っているケース。
一つ上のサイトからリンクされているページ。設定した結果がもう少し詳しくのっている。
タイトルにWCFの文字はないが、画面の画像付きで丁寧に説明されている。ASP.NET(MVCではない)が動作する環境ではWCF Data Servicesも動作するようだ。
「現在のセキュリティ コンテキストでは、NT AUTHORITY\IUSR はデータベース にアクセスできません。」というエラーメッセージが表示される
WCF Data Servicesのトップ画面は表示されたが、個別のエンティティセットを表示しようとすると上記エラーメッセージが表示されてしまう。IUSR について調べてみると、以下のサイトに情報があった。
関連個所を引用すると
Windows Vista 以降、IUSR ユーザーアカウントをビルトインアカウントとして用意し、これを匿名認証のときに用いるようになりました。
そして
IIS マネージャーを使って、「IIS」の「認証」の「匿名認証」の編集で、匿名ユーザー ID をアプリケーションプール ID に設定すれば既定のIUSR を使用せずに、アプリケーションプール ID のみでアクセス許可の設定ができるようになります。
とあるため、 IIS マネージャーを開いて匿名認証の設定を確認すると、既定のユーザー(IUSR)になっていたので、アプリケーションプール IDに設定することでデータを表示することが出来た。
以上
おまけ
アプリケーションプール IDでデータベースにアクセスする設定は、過去記事参照。