I try to call the WCF service using jQuery and get this error:
"Cannot process the message because the content type 'application/json; charset=utf-8' was not the expected type 'multipart/related; type="application/xop+xml"'."
Here's what my WCF service looks like:
Interface:
public interface IService { [OperationContract] [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)] PhotoServiceResponse GetPhoto(); } [DataContract] public class PhotoServiceResponse { [MessageBodyMember] public Byte[] Photo { get; set; } }
Implementation:
[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 }
Config:
<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>
This is how I try to access this service using 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>
What is the reason why I get this error? How to fix it?
Any help would be greatly appreciated.
Asdfg source share