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
{

 

コメントを残す

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