2011-09-16 12 views
3

アドレス(ホストベースアドレスはhttp://localhost/MyService)でwsHttpBindingを使用してサービスをホストしています。私の契約でサービスルートアドレス(後続のスラッシュなし)でWCF RESTサービスをホストするにはどうすればよいですか?

IMyService)、私が持っている:

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

私は私のサービスを実行してhttp://localhost/MyService/を参照している場合、それは正常に動作します。 http://localhost/MyServiceを参照すると、このサービスでメタデータ公開サービスが有効になっていないことを示す既定のWCFページが表示されます。

IはUriTemplateの様々な組み合わせを試してみました:

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

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

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

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

答えて

3

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

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

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

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

<serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false" /> 
0

あなたの質問はすでに回答済みです:Simple URL routes in WCF Rest 4.0 without trailing slash

確認できますか?

+0

これまでのところ、それを見ても、私はServiceRouteコードを見ていませんでした。私の最初の前提は、そこにホストされているサービスはwww.domain.comで、UriTemplateは「cars」でした。私のコードをもう少し詳しく試してみましょう。 – Travis

+0

これ以上見ると、私の質問には答えられません。これは、複数のサービスが本質的に同じアドレスでホストされるようにルートを追加することです。私は本質的にルートアドレスに何かをホストしようとしています(末尾にスラッシュはありません) – Travis