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>
答案 0 :(得分:0)
您收到HTTP 400错误,因为您尝试直接访问端点。端点需要SOAP请求,而是浏览器发送HTTP GET请求,端点无法处理。您应该在浏览服务时使用基址,因为您在浏览器中看到的元数据和帮助页面位于此处:
http://localhost:50666/MyService.Foo