Error: Cannot process the message because the content type 'application/json; charset=utf-8 was not the expected type
.net-3.5, ajax, asp.net, jquery, wcf
Solution
I think you are facing some exception because you are doing some mistakes in binding and others.
For REST communication in WCF, you should use the `webHttpBinding` and not `wsHttpBinding`. Second you should mark the `Photo` property with `DataMember`.
[DataContract]
public class PhotoServiceResponse
{
[DataMember]
public Byte[] Photo { get; set; }
}
And you have to use the `System.ServiceModel.Activation.WebServiceHostFactory` in the svc file.
Ex.
<%@ ServiceHost Service="Service1"
Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
Once you fixed this issues at-least you see some response in the client side and if the service is running in different domain make sure you have done enough settings in the service side for cross site communication.
Problem
I am trying to invoke WCF service using jQuery and getting 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"'." ``` This is how 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 am trying 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 i am getting this error? How do i fix it? Any help will he highly appreciated.