我有一个简单的控制台应用程序,它作为WCF服务主机运行。使用bsicHttpBinding。 当我尝试在我的客户端(另一个控制台应用程序)中获取服务引用时,我收到此错误
“下载http:// localhost:9999 / TS时出错。 请求失败,HTTP状态为400:错误请求。 元数据包含无法解析的引用:'http:// localhost:9999 / TS'。 内容类型application / soap + xml;服务http://localhost:9999/TS不支持charset = utf-8。客户端和服务绑定可能不匹配。 远程服务器返回错误:(415)无法处理消息,因为内容类型为'application / soap + xml; charset = utf-8'不是预期的类型'text / xml;字符集= UTF-8' .. 如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。“
请提供任何指示。
App.config中:
<configuration>
<system.serviceModel>
<services>
<service
name="TimeServiceLibrary.TimeService"
behaviorConfiguration="TSConfig">
<endpoint address="localhost:9999/TS"
binding="basicHttpBinding"
contract="TimeServiceLibrary.ITime">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="TSConfig">
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
答案 0 :(得分:0)
错误似乎表明它试图在wsHttpBinding上使用SOAP 1.2,但我不确定为什么(必须缺少咖啡)。如果您发布了配置文件的相关部分,或者如果它太大则将其上传到某处
,这可能会有所帮助当您浏览http://localhost:9999/TS/?WSDL时,您会得到什么?
您是否配置了mex端点(元数据交换)?有关示例配置,请参阅here。
答案 1 :(得分:0)
好吧,Basic HTTP绑定使用SOAP 1.1,后者又使用内容类型text/xml
。较新的WS-HTTP绑定使用SOAP 1.2,它使用application/soap+xml
内容类型。 WCF抱怨,因为您的服务似乎设置为使用带有application/soap+xml
内容类型的基本HTTP绑定,但这不起作用。
也许您可以尝试在地址http://
之前添加localhost
,或者只使用TS
作为地址,并在基地址元素中指定http://localhost:9999
,例如在<service>
元素内:
<baseAddress>
<add baseAddress="http://localhost:9999/" />
</baseAddress>