WCFサービスをASP.NETでホストする場合に表示されたエラー。結構悩んだので備忘録。
ブラウザから、IIS(ASP.NET)経由でWCFサービスにアクセスする場合にブラウザに表示される画面
‘/’ アプリケーションでサーバー エラーが発生しました。
ASP.NET との互換性がないため、サービスをアクティブにできません。このアプリケーションでは、ASP.NET との互換性が有効になっています。web.config 内で ASP.NET の互換性モードを無効にするか、RequirementsMode に Allowed または Required が設定されたサービスの型に、AspNetCompatibilityRequirements 属性を追加してください。
エラーを読むと、Web.configを直すか、WCFサービスの定義を修正しろの2択に見えるのだが、実際には両方しないと正常には動作しません。
WCF WEB HTTP サービスのキャッシュ サポート
https://msdn.microsoft.com/ja-jp/library/ee230443(v=vs.100).aspx
Web.config
<?xml version="1.0" encoding="utf-8"?> <!-- ASP.NET アプリケーションの構成方法の詳細については、 http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください --> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <!-- WCFがASP.NET環境で動くように --> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel> </configuration>
WcfService.cs
namespace SampleWCFLib { // メモ: [リファクター] メニューの [名前の変更] コマンドを使用すると、コードと config ファイルの両方で同時にクラス名 "Service1" を変更できます。 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class WfcService : IWfcService {