在Vista 64位上运行WCF服务

时间:2010-01-14 08:32:44

标签: .net wcf

我有一个简单的控制台应用程序,它作为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>

2 个答案:

答案 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>