我正在尝试使用 jQuery 调用 WCF 服务并收到此错误:
"Cannot process the message because the content type
'application/json; charset=utf-8' was not the expected type 'multipart/related;
type="application/xop+xml"'."
这就是我的 WCF 服务的样子:
界面:
public interface IService
{
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json)]
PhotoServiceResponse GetPhoto();
}
[DataContract]
public class PhotoServiceResponse
{
[MessageBodyMember]
public Byte[] Photo { get; set; }
}
执行:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service : IService
{
#region IService Members
public PhotoServiceResponse GetPhoto()
{
PhotoServiceResponse response = new PhotoServiceResponse();
response.Photo = File.ReadAllBytes(@"C:\Temp\SomePic.bmp");
return response;
}
#endregion
}
配置:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WsHttpMtomBinding" maxReceivedMessageSize="5242880" messageEncoding="Mtom">
<readerQuotas maxStringContentLength="655360" maxArrayLength="1310720" maxNameTableCharCount="1310720" maxBytesPerRead="327680" />
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="svcBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="svcBehaviour"
name="Service">
<endpoint address="" binding="wsHttpBinding"
contract="IService"
bindingConfiguration="WsHttpMtomBinding"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8081/Service" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
这就是我尝试使用 jQuery AJAX 访问此服务的方式:
<script type="text/javascript">
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://localhost:8081/Service/GetPhoto",
data: "{}",
crossDomain: true,
dataType: "json",
success: function (msg) {
alert(msg);
},
error: function(jqXHR)
{
alert(jqXHR.statusText);
}
});
</script>
我收到此错误的原因是什么?我如何解决它?
他将高度赞赏任何帮助。