Ошибка при использовании WCF serrvice : ошибка : удаленный сервер вернул ошибку: (415) не удается обработать сообщение, поскольку тип содержимого "application/json" не был ожидаемым типом..
Привет ,
public class Service1 : IService1 { public string GetData(int value) { return string.Format("You entered: {0}", value); } public CompositeType GetDataUsingDataContract(CompositeType composite) { if (composite == null) { throw new ArgumentNullException("composite"); } if (composite.BoolValue) { composite.StringValue += "Suffix"; } return composite; } } [ServiceContract] public interface IService1 { [OperationContract] [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, UriTemplate = "GetData")] string GetData(int value); [OperationContract] CompositeType GetDataUsingDataContract(CompositeType composite); // TODO: Add your service operations here } Web.config - <pre><pre lang="c#"><?xml version="1.0"?> <configuration> <appSettings> <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> </appSettings> <system.web> <compilation debug="true" targetFramework="4.5.2" /> <httpRuntime targetFramework="4.5.2"/> </system.web> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <!-- To avoid disclosing metadata information, set the values below to false before deployment --> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> <protocolMapping> <add binding="basicHttpsBinding" scheme="https" /> </protocolMapping> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <!-- To browse web app root directory during debugging, set the value below to true. Set to false before deployment to avoid disclosing web app folder information. --> <directoryBrowse enabled="true"/> </system.webServer> </configuration>
Использование службы WCF:
int CloseCall1 = 28; DataContractJsonSerializer ser1 = new DataContractJsonSerializer(typeof(int)); MemoryStream mem1 = new MemoryStream(); ser1.WriteObject(mem1, CloseCall1); string data1 = System.Text.Encoding.UTF8.GetString(mem1.ToArray(), 0, (int)mem1.Length); WebClient webClient1 = new WebClient(); //webClient1.Headers["Content-type"] = "text/xml"; webClient1.Headers["Content-type"] = "application/json"; webClient1.Encoding = System.Text.Encoding.UTF8; string strResponse = webClient1.UploadString("http://125.63.72.168:4444/Service1.svc/GetData", "POST", data1);
Что я уже пробовал:
Я создал простой сервис WCF и разместил его .
Код моего сервиса WCF очень прост, как показано здесь .
Когда я потребляю эту службу WCF, появляется ошибка . Я перепробовал все предложения, доступные в интернете, но не смог решить проблему . Пожалуйста помочь .
The remote server returned an error: (415) Cannot process the message because the content type 'application/json' was not the expected type 'text/xml; charset=utf-8'..
Кто-нибудь может пожалуйста помочь мне . Застрял здесь плохо, заранее спасибо .
Richard Deeming
"тип контента 'application/json' не был ожидаемым типом 'text/xml; charset=utf-8'
Ваша служба WCF понимает только XML. Вы пытаетесь отправить JSON.