3

アドレスで wsHttpBinding を使用してホストされているサービスがあります (ホストのベース アドレスはhttp://localhost/MyService です)。

私の契約 ( IMyService) には、次のものがあります。

    [OperationContract]
    [WebInvoke(
        Method = "GET",
        UriTemplate = "/")]
    Stream GetRootPage();

サービスを実行してhttp://localhost/MyService/を参照すると、問題なく動作します。http://localhost/MyServiceを参照すると、既定の WCF ページが表示され、メタデータ公開サービスがこのサービスに対して有効になっていないことが示されます。

UriTemplate のさまざまな組み合わせを試しました。

  • UriTemplate = ""
  • UriTemplate = "/"
  • UriTemplate = "*"

サービスベースアドレスとの組み合わせ:

それらはすべて同じ動作をもたらします。UriTemplate でサブパスを使用していた可能性がありますが、以前のある時点で、これが機能していると断言できました。"/abc/123/" の UriTemplate がある場合、WCF は実際に HTTP 307 リダイレクトを自動的に発行するため、(末尾のスラッシュなしで) /abc/123 を参照できます。

.NET 4.0 を使用しています。

4

2 に答える 2

3

私はこれを行う方法を考え出しました:

デフォルトの WSDL 生成が無効になっている (または少なくともデフォルトの URL を使用していない) ことを確認します。

<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />

ヘルプ URL が無効になっていることを確認します。

<serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false" />
于 2012-10-04T04:43:31.833 に答える
0

あなたの質問はすでに次のように回答されていると思います: Simple URL routes in WCF Rest 4.0 without Trailing slash

それを確認できますか?

于 2011-09-16T21:09:30.463 に答える