2009-08-17 24 views
0

私はIIS 6.0上で私のREST WCFサービスをヒットしようとすると、WCFから次のエラーを見ているを使用してHTTPのベースアドレスを見つけることができません。WCFは、RESTサービス

のためのスキームをhttpに一致するベースアドレスが見つかりませんでしたエンドポイントはWebHttpBindingをバインドします。登録ベースアドレス方式は[]です。

は私のweb.configファイルは次のようになります。

<system.serviceModel> 
<serviceHostingEnvironment> 
    <baseAddressPrefixFilters> 
    <!--LOCAL--> 
    <add prefix="http://localhost/CustomTrackingService/CustomTrackingService.svc"/> 
    <!--TEST--> 
    <!--<add prefix="http://mytestserver/CustomTrackingService/CustomTrackingService.svc"/>--> 
    </baseAddressPrefixFilters> 
</serviceHostingEnvironment> 
<services> 
    <service name="MyService.CustomTrackingService"> 
    <endpoint 
     address="MyAction" 
     binding="webHttpBinding" 
     contract="MyContract.ICustomTrackingService" 
     behaviorConfiguration="RestBehavior" /> 
    </service> 
</services> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="RestBehavior"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

これは私のテストサーバー上で正常に動作し、私はCasiniがローカルホストに(変更のベースアドレスのプレフィックスはlocalhost/CustomTrackingServiceそれをつかむせた場合、ローカルに正常に動作します: 1234 /)。私はこれが起こる原因を覚えていません。私のGoogle-fuは役に立つ結果を生み出していません。何か案は?

答えて

1

ローカルアドレスが定義されていない相対アドレスを使用しようとしていたようです。これはテストサーバーが誤って複数のホストヘッダーを定義していたため、テストサーバーで動作しました.WCFで定義されている複数のベースアドレスに変換されているようです。私はもともとHTTP用の複数のベースアドレスについてエラーが発生していたため、実際の問題を認識することなく、私が使いたいものを除外してテストサーバー上で使用しました。私はホストヘッダーが定義されていないため、Thsiはローカルでは動作しません。したがって、ベースアドレスが指定されていないため、フィルタは何もせず、相対アドレス指定の試行に失敗しました。

私の状況に最適なセットアップが何であるかを調べるためにもう少し実験をするつもりですが、IISのホストヘッダーを確認することは間違いありませんでした。また、this linkは本当に何が起こっていたのかを理解するのに大きな助けとなりました。

0

なぜ、IISでホストしている場合、ベースアドレスプレフィックス+エンドポイント@アドレスに無関係な値を使用していますか?

+0

最終的には、私のURLをRESTサービスのhttp://localhost/CustomTrackingService/CustomTrackingService.svc/MyAction/MyNounとして読ませることです。これを行うより良い方法があれば、私は聞いて嬉しいです。 –

関連する問題