single.php

WCF WEB HTTP サービスのキャッシュ サポート AspNetCompatibilityRequirements

WCFサービスをASP.NETでホストする場合に表示されたエラー。結構悩んだので備忘録。

ブラウザから、IIS(ASP.NET)経由でWCFサービスにアクセスする場合にブラウザに表示される画面

wcf-service-asperror

‘/’ アプリケーションでサーバー エラーが発生しました。

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
    {

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です