0

ねえ、

私は完全なばかのように感じますが、答えが見つからないようです。

コンソール アプリケーションで 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>
4

1 に答える 1

0

エンドポイントに直接アクセスしようとしているため、HTTP400エラーが発生します。エンドポイントはSOAP要求を予期しますが、代わりにブラウザーはHTTP GET要求を送信しますが、これはエンドポイントで処理できません。ブラウザに表示されるメタデータとヘルプページはここにあるため、サービスを参照するときはベースアドレスを使用する必要があります。

http://localhost:50666/MyService.Foo
于 2013-01-24T00:27:10.753 に答える