ワイルドカード マッピングが有効なときに IIS6 で WCF メソッドを実行すると、404 が返されます。
これは、VS2008 で新しい WCF サービスを作成することで再現できます (新しいプロジェクト > WCF サービス アプリケーション)。ダミー メソッド ('GetData') を参照すると、400 が返されます。これは、まだ WCF に転送中であることを示しているため問題ありません。
ただし、IIS6 でワイルドカード マッピングを有効にすると、404 が返されます。これは、WCF が要求をインターセプトしなくなったことを意味します。
私のコードは次のとおりです。
[ServiceContract]
public interface IRest {
[OperationContract]
[WebGet(UriTemplate = "/test")]
int Test();
}
次の web.config を使用します。
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceX.RestBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceX.RestBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" />
<services>
<service behaviorConfiguration="ServiceX.RestBehavior"
name="ServiceX.Rest">
<endpoint address="" behaviorConfiguration="ServiceX.RestBehavior"
binding="webHttpBinding" contract="ServiceX.IRest" />
</service>
</services>
</system.serviceModel>
ワイルドカード マッピングなしですべて正常に動作します。「/services/rest.svc/test」を参照すると、期待どおりの結果が得られます。
ただし、ワイルドカード マッピング (.* > C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll) を有効にするとすぐに、メソッドにアクセスしようとすると 404 を受信し始めます (まだアクセスできますが)。 「/services/rest.svc」を表示します)。
私はGoogleとStackOverflowを使い果たしました:(