Tôi muốn gửi dữ liệu ở định dạng jason tới dịch vụ wcf để xử lý. Dịch vụ Wcf được phát triển và khi đầu vào jason được gửi tới dịch vụ bằng cách sử dụng trình phát, nó sẽ phát ra lỗi - Máy chủ đã gặp lỗi khi xử lý yêu cầu. Thông báo ngoại lệ là 'Tin nhắn đến có định dạng tin nhắn không mong muốn' Raw '. Các định dạng tin nhắn dự kiến cho hoạt động là 'Xml', 'Json'. Điều này có thể là do WebContentTypeMapper chưa được định cấu hình trên liên kết. Xem tài liệu của WebContentTypeMapper để biết thêm chi tiết. '. Xem nhật ký máy chủ để biết thêm chi tiết.Lỗi dịch vụ WCF - Thư đến có định dạng thư không mong muốn 'Nguyên'. Định dạng tin nhắn dự kiến là 'Xml', 'Json'
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
Nếu tôi sử dụng wcftestclient (chế độ gỡ lỗi), nó hoạt động tốt - đoán nó sử dụng xà phòng/xml.
Cảm ơn !!! Tôi đã không nhận thấy rằng ngay cả sau khi chi tiêu một ngày về điều này! – btsdotnet
Tôi đang gặp phải một vấn đề nữa - tham số đầu vào cho phương thức này là một kiểu phức tạp (mặc dù tôi đã đơn giản hóa nó trong mã trên). Lớp nhân viên chứa một mảng của một kiểu dữ liệu phức tạp khác (class) mà lần lượt có một mảng của một kiểu phức tạp (lớp) khác. Khi tôi gửi đầu vào Json, tôi thấy giá trị của cấp 1 và cấp 2 nhưng giá trị cấp 3 hiển thị trống. Có bất kỳ hạn chế về mức độ làm tổ? Nó hoạt động tốt khi tôi sử dụng xà phòng/xml – btsdotnet