Wcf自我托管overHttp和浏览

时间:2012-10-04 13:37:22

标签: wcf self-hosting

HeJ小鼠,

我觉得自己像个白痴,但我似乎找不到答案。

我在控制台应用程序中自动托管WCF服务。 这就像一个魅力,我做了一百万次:))

从其他控制台应用程序或使用wcftestclient消耗此服务完全没问题。

但是当我尝试浏览这项服务时,我会感到“奇怪”。

该服务托管在http://localhost:50666/MyService.Foo/BarServiceHttp(基地址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>

1 个答案:

答案 0 :(得分:0)

您收到HTTP 400错误,因为您尝试直接访问端点。端点需要SOAP请求,而是浏览器发送HTTP GET请求,端点无法处理。您应该在浏览服务时使用基址,因为您在浏览器中看到的元数据和帮助页面位于此处:

http://localhost:50666/MyService.Foo