.net Silverlight&x2B;WCF异常:应为应用程序/soap+;xml,接收文本/xml
我有一个Silverlight应用程序,我想在其中调用WCF服务。调用服务时,我从服务器收到以下响应: 415无法处理消息,因为内容类型为“text/xml”;charset=utf-8“不是预期的类型”application/soap+xml;字符集=utf-8.net Silverlight&x2B;WCF异常:应为应用程序/soap+;xml,接收文本/xml,.net,wcf,silverlight,exception-handling,wcf-configuration,.net,Wcf,Silverlight,Exception Handling,Wcf Configuration,我有一个Silverlight应用程序,我想在其中调用WCF服务。调用服务时,我从服务器收到以下响应: 415无法处理消息,因为内容类型为“text/xml”;charset=utf-8“不是预期的类型”application/soap+xml;字符集=utf-8 以前有人遇到过这个问题吗?有人知道我需要调整哪些配置设置吗?请提供有关如何解决此问题的任何信息。好的,您可以尝试在VS2008中使用“Silverlight启用的WCF服务”模板,并比较它们之间的差异?我希望您需要使用basicHtt
以前有人遇到过这个问题吗?有人知道我需要调整哪些配置设置吗?请提供有关如何解决此问题的任何信息。好的,您可以尝试在VS2008中使用“Silverlight启用的WCF服务”模板,并比较它们之间的差异?我希望您需要使用
basicHttpBinding
,并且正在使用更奇特的东西
有关信息,请参阅默认Silverlight/WCF服务的web.config部分:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MySite.Service1Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="MySite.Service1Behavior"
name="MySite.Service1">
<endpoint address="" binding="basicHttpBinding"
contract="MySite.Service1" />
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
服务可能正在引发异常。异常消息的格式不是服务调用所期望的格式,因此出现了“非预期类型”消息 如果调用的方法没有在内部引发异常,请根据Marc Gravell的有用回答检查服务或其他配置项的安全设置 有两种方法可以检查异常:详细查看异常消息,或跟踪WCF服务调用
“C:\Program Files\Microsoft SDK\Windows\v6.0A\bin\SvcTraceViewer.exe”
您可以使用更改WCF web服务上任何方法中响应的内容类型 下面的代码显示了如何使用此类将内容类型设置为application/xml并返回UTF-8编码的流:
[ServiceContract]
public interface IPolicyProvider
{
[OperationContract, WebGet(UriTemplate = "/ClientAccessPolicy.xml")]
Stream ProvidePolicy();
}
public sealed class StockService : IPolicyProvider
{
public Stream ProvidePolicy()
{
WebOperationContext.Current.OutgoingResponse.ContentType = "application/xml";
return new MemoryStream( Encoding.UTF8.GetBytes(File.ReadAllText("ClientAccessPolicy.xml")) , false);
}
}
如果您感兴趣,这个示例是为了在自托管WCF web服务中为Silverlight客户端启用跨域调用,请查看更多信息,我有一个代码下载
在您的情况下,对于来自WCF服务的响应,您可以将内容类型设置为application/soap+xml,并使用UTF-8
WebOperationContext类位于System.ServiceModel.Web程序集中,是.NET Framework 3.5的一部分
希望这有帮助。我在尝试将Silverlight应用程序连接到WCF服务时遇到此错误 根本原因是WCF服务是使用wsHttpBinding绑定的,而Silverlight只支持basicHttpBinding
所以,请检查web.config中的
元素,并确保服务的绑定信息位于
元素中,并且服务定义的
元素使用basicHttpBinding。谢谢您提供的信息……结果是服务器上为wsHttpBinding配置了一个服务。谢谢您提供的信息Tom,我的一个服务被配置为wsHttpBinding。写得不错谢谢Peter…你的便条实际上是一个很好的知识珍品。我的问题是服务器上的wsHttpBinding设置不正确。