ねえ、
私は完全なばかのように感じますが、答えが見つからないようです。
コンソール アプリケーションで WCF サービスを自己ホストしています。これは魔法のように機能しています、私はそれを何百万回もやりました:)
別のコンソール アプリケーションから、または wcftestclient を使用してこのサービスを利用することはまったく問題ありません。
しかし、サービスを参照しようとすると、「奇妙な」動作が発生します。
http://localhost:50666/MyService.Foo/BarServiceHttp
このサービスは( base-addressで)でホストされていますhttp://localhost:50666/MyService.Foo
。
そのため、 を参照するhttp://localhost:50666/MyService.Foo/BarServiceHttp
と、ブラウザーで HTTP 400 エラーが返されます。
ベースアドレスを参照すると、完全なアドレスで期待した出力が得られます。
どうしたの?(http の後のスペースは、localhost に関する警告を回避するために挿入されました...)
サーバー構成は次のとおりです。
<service name="FooService" behaviorConfiguration="FooBarServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:50666/MyService.Foo" />
</baseAddresses>
</host>
<endpoint address="BarServiceHttp"
binding="basicHttpBinding"
bindingConfiguration="basicHttpBindingConfiguration"
contract="IBarService" />
<endpoint address="BarServiceHttp/mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
<behavior name="FooBarServiceBehavior">
<!-- Enable MEX http get for this service. -->
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>