2010年8月6日金曜日

Syetem.ServiceModel 3.0.0.0 が何故か呼び出されてしまう件

講習で教えているのもあり、WCF 4 で作成したサービスを IIS 7.5 にてホスティングしようとしていて四苦八苦したのでメモ。

開発用Webサーバではしっかり動作するのに、IIS に変えてみると

「System.ServiceModel.Activation.HttpHandler 3.0.0.0」

が読み込みに失敗している旨のエラーが出てしまう場合。エラー内容から、どこかの設定にて上記アセンブリを参照しようとしているのは何となくわかるんだけど、それがどこにあるかがわからなかったわけで。

IIS の設定としてハンドラーマッピングとモジュールがあり、そこを変更してもうまくいかないんだよねぇ(まぁ元々方法としてどうよ?だけど)

で検索して色々調べていると、ご飯党(@shusoku)さんという方がそのものズバリな事をつぶやいていました。

sc0000

これに従う形として、サービスプロジェクト側の web.config に手作業で <modules>セクションと <handlers> セクションを <system.webserver> セクションに追加。こんな感じ

<modules>
    <remove name="ServiceModel"/>
    <add name="ServiceModel" type="System.ServiceModel.Activation.ServiceHttpModule, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</modules>
<handlers>
    <remove name="svc-Integrated" />
    <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModell.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" requireAccess="None" preCondition="integratedMode" />
</handlers>

どうやら IIS 7.5 をインストした際の初期設定では .NET 4 用の設定があるんだけどうまいこと利用されない、ということらしい。

とりあえずこれでサービスが無事動作するところはOKでした。

0 件のコメント:

コメントを投稿