Content Type 'application / json; charset = utf-8 'was not the expected type text / xml; encoding = UTF-8 '

When using firebug, I got this wired error "NetworkError: 415 Cannot process ... xt / xml; charset = utf-8. - http://localhost:59899/wsccc1/wscccService.svc/RunTts " in my asp project. net mvc 4.

Code:

 <script lang="javascript" type="text/javascript"> function ttsFunction() { serviceUrl = "http://localhost:59899/wsccc1/wscccService.svc/RunTts"; var data = new Object(); data.text = $('#speak').val(); var jsonString = JSON.stringify(data); $.ajax({ type: 'POST', url: serviceUrl, data: jsonString, contentType: 'application/json; charset=utf-8', dataType: 'json', success: function() { alert('ok')}, error: function (xhr,status,error) { console.log("Status: " + status); console.log("Error: " + error); console.log("xhr: " + xhr.readyState); }, statusCode: { 404: function() { console.log('page not found'); } } }); } </script> 

Service Code:

  [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(IncludeExceptionDetailInFaults = true)] public class wservice:Iwservice { public string RunTts(string value) { return value.ToUpper(); } } 

Interface:

 namespace service { [ServiceContract] public interface Iwservice { [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "RunTts")] string RunTts(string text); } } 

And the web config I used without files in WCF .:

 <?xml version="1.0"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.5"/> <httpRuntime targetFramework="4.5"/> </system.web> <system.serviceModel> <serviceHostingEnvironment > <serviceActivations> <add factory="System.ServiceModel.Activation.ServiceHostFactory" relativeAddress="./wsccc1/wscccService.svc" service="service.wservice"/> </serviceActivations> </serviceHostingEnvironment> <behaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration> 
+6
source share
2 answers

You need to use WebServiceHostFactory instead of the usual ServiceHostFactory in your code. This will allow you to configure the endpoint with the appropriate binding ( webHttpBinding ) and behavior ( webHttp ) to honor the [WebInvoke] attribute.

 <serviceHostingEnvironment > <serviceActivations> <add factory="System.ServiceModel.Activation.WebServiceHostFactory" relativeAddress="./wsccc1/wscccService.svc" service="service.wservice"/> </serviceActivations> </serviceHostingEnvironment> 
+11
source

Go to your endpoint web.config tag and check if the bindingConfiguration present or not, and also make sure the address is correct.

 <endpoint address="/YourName".../> 
+4
source

Source: https://habr.com/ru/post/948972/


All Articles