我创建了一个RESTful WCF服务(感谢StackOverflow)。我创建了一个测试客户端,它是一个简单的.aspx页面,包含5个文本框和一个提交按钮。当我将数据输入文本框并单击“提交”按钮时,它将提交数据 到WCF服务。
我的WCF服务在Visual Studio开发服务器下运行,它工作正常,我能够成功地将数据发送到WCF服务。今天我在本地IIS上部署了这个WCF服务。当我尝试在客户端应用程序(.aspx页面)中引用服务URL时,我收到此错误。
“元数据包含无法解析的引用。客户端和 服务绑定可能不匹配。无法处理消息,因为 内容类型'application / soap + xml; charset = utf-8'不是 期望的类型'text / xml;“
知道问题可能是什么?这是我的web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="RESTService1">
<endpoint address="http://localhost:420/WCFRESTService100/RESTService1.svc" binding="webHttpBinding" name="MainHttpPoint" contract="RESTService1" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:420/WCFRESTService100/RESTService1.svc" />
</baseAddresses>
</host>
</service>
</services>
<!--<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>-->
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>
答案 0 :(得分:1)
我认为问题在于您已经为REST服务添加了服务引用。 REST服务没有任何可用的元数据,因为没有标准的元数据格式来描述它们。
您能够添加服务引用的唯一原因是您在服务上留下了暴露SOAP定义的服务。因此,如果您粘贴客户端配置,我确定端点有一个SOAP端点(wsHttpBinding或basicHttpBinding),因此您在进行调用时会收到有关mime类型不匹配的错误的原因。
如果要使用WCF从客户端调用REST服务,则需要在客户端和服务器之间共享合同定义,或者在客户端完全复制它。