WCF-Dienst-Fehler - Eingehende Nachricht eine unerwartete Nachricht-format 'Raw'. Erwartete Nachricht Formate sind 'Xml', 'Json'
Ich möchte zum senden von Daten in jason-format an einen wcf-Dienst für die Verarbeitung. Wcf-Dienst entwickelt und wenn jason Eingabe an den service mit fiddler, es wirft den Fehler -
Der server hat einen Fehler bei der Verarbeitung der Anfrage. Die Ausnahmemeldung lautet 'Der eingehenden Nachricht hat eine unerwartete message format 'Raw'. Die erwartete message-Formate für den Betrieb sind die 'Xml', 'Json'. Dies kann sein, weil ein WebContentTypeMapper nicht konfiguriert wurde auf die Bindung. Finden Sie in der Dokumentation von WebContentTypeMapper für weitere details.'. Siehe server-logs für weitere details.
Service contract
================
public interface IRegisterEmployee
{
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle=WebMessageBodyStyle.Bare, ResponseFormat=WebMessageFormat.Json, UriTemplate = "AddEmployee")]
bool ProcessEmployee(Employee emp);
}
[DataContract]
public class Employee
{
[DataMember]
public string emp { get; set; } //this is actually a complex type, but simplified here
}
Service class
============
public class RegisterEmployee : IRegisterEmployee
{
public bool ProcessEmployee(Employee emp)
{
//do some processing
return true;
}
Web.config
=========
<services>
<service name="Project.RegisterEmployee">
<endpoint address="Rest" behaviorConfiguration="RestfulBehavior" binding="webHttpBinding" name="Rest" contract="Project.IRegisterEmployee" />
<endpoint address="Soap" behaviorConfiguration="" binding="basicHttpBinding" name="Soap" contract="Project.IRegisterEmployee" />
<endpoint address="Mex" behaviorConfiguration="" binding="mexHttpBinding" name="Mex" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/Project" />
</baseAddresses>
</host>
</service>
</services>
<endpointBehaviors>
<behavior name="RestfulBehavior">
<webHttp automaticFormatSelectionEnabled="true" />
</behavior>
</endpointBehaviors>
*Fiddler
======
POST; http://localhost/Project/RegisterEmployee.svc/Rest/AddEmployee
Content-Type: application/jason
Request Body = {"emp" : "test"}*
Error - HTTP/1.1 400 Bad Request
Wenn ich wcftestclient (debug-Modus), funktioniert es - denke mal es verwendet soap/xml.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den content-type der Anforderung werden sollte, application/json, nicht Anwendung/jason. Versuchen Sie dies zu ändern und es sollte funktionieren.
Wird dieses Problem weiterhin auftreten, nachdem die oben genannten Korrektur, WENN es ein Ungleichgewicht gibt zwischen dem, was die content-type-mapper ist die Rücksendung und die RequestFormat.
Auf Ihrem verbindlich, wenn Sie
stellen Sie sicher, dass das, was die Methode
gibt passt sagen
auf Ihre operationcontract