2

次のように定義された REST 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を使い果たしました。誰もこの問題を共有していないようです:(

EDIT: VS2008で新しいWCFサービスを作成することで、これをすべて再現できます(新しいプロジェクト> WCFサービスアプリケーション)。ダミー メソッド ('GetData') を参照すると、400 が返されます。これは、まだ WCF に転送中であることを示しているため問題ありません。ただし、 IIS6 でワイルドカード マッピングを有効にすると、404 が返されます。これは、WCF が要求をインターセプトしなくなったことを意味します。

4

2 に答える 2

1

IIS6で実行されているWCFサービスでも同じ問題が発生しました。

http://someurl/service.svcでサービスを参照することはできますが、http://someurl/service.svc/somemethodなどのサービスのメソッドを押すと404が表示されます。

私の場合、修正は簡単でした。.svcファイルタイプはIISでC:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dllによって処理されるように構成されていましたが、サービスはASP.NET v4.0アプリプールで実行されていたため、単純にC:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319\aspnet_isapi.dllによって処理される.svcファイルタイプを指定しました

于 2011-03-01T10:07:06.867 に答える
0

ワイルドカード マッピングのパスを指定するポップアップ ダイアログには、[ファイルが存在することを確認する] という設定のチェック ボックスがあります。この設定はオフにする必要があります。

オフにしないと、404 (ページが見つかりません) が返されます。

于 2011-03-11T05:32:59.127 に答える