IIS の Web サイト内にアプリケーションを作成しました。
私のアプリケーションは、.Net 4.0 コードを実行する WCF サービス エンドポイントをホストするためにあります (作成された Web サイトは .Net 2.0 を実行しています)。
このサービス エンドポイントをロードすると、モデルとハンドラーが見つからないというエラーが表示されます (ルート Web サイトに web.config で定義されているため)。
次のディレクティブでsystem.webとsystem.serviceModelをラップしてみました:
<location path="." inheritInChildApplications="false">
<system.web>
...
</location>
ただし、ハンドラーとモジュールは引き続きロードを試みます。
次に、モジュールとハンドラーをクリアしてみました。
<httpModules>
<clear />
</httpModules>
<httpHandlers>
<clear />
</httpHandlers>
これにより、次のエラーが発生しました。
リクエスト タイプ「GET」の HTTP ハンドラが見つかりませんでした
次に、.svc に必要なハンドラーのみを手動で追加しようとしました
<add
verb="*"
path="*.svc"
type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
これにより、次の結果が得られました。
アセンブリ 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' から型 'System.ServiceModel.Activation.HttpHandler' を読み込めませんでした。
IIS では、私のアプリケーションは .Net 4.0 に設定されています。アプリケーション プールでフレームワークを直接指定する方法は見当たりませんでした ([リサイクル]、[パフォーマンス]、[ヘルス]、[ID] タブしかありません)。
私がする必要があるのは、.net 4.0 を実行するこの仮想ディレクトリ/アプリケーションを 2.0 Web サイト内に追加し、WCF エンドポイントをホストすることだけです。
私の 4.0 アプリケーションは別のアプリケーション プールで実行されています。
web.config 全体を追加する
<?xml version="1.0"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.web>
<compilation debug="true" />
<authentication mode="Windows" />
<httpModules>
<clear />
</httpModules>
<httpHandlers>
<clear />
<add verb="*" path="*.svc"
type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</httpHandlers>
</system.web>
<system.serviceModel>
<bindings>
<!--<basicHttpBinding>
<binding name="extAcctCustMapBinding" maxBufferSize="1000000"
maxReceivedMessageSize="1000000" />
</basicHttpBinding>-->
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="DebugBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="DebugBehavior" name="MyService">
<endpoint binding="basicHttpBinding" name="MyService"
contract="IMyService" />
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="false"/>
</system.webServer>
</location>
</configuration>