2011-10-31 44 views
5

Tôi đang tạo dịch vụ api web của WCF. Vấn đề của tôi là một số phương thức trả về phản hồi 200/OK, nhưng tiêu đề và phần thân trống.Dịch vụ web WCF: phản hồi là 200/ok, nhưng nội dung phản hồi trống

Khi thiết lập dịch vụ web của mình, tôi đã tạo một Mô hình dữ liệu thực thể ADO.NET. Tôi đã chọn ADO.NET DbContext Generator khi tôi thêm một mục tạo mã. Trong tài liệu Model.tt, tôi đã thay đổi HashSet và ICollection thành List. Tôi đã xây dựng trang web của mình.

Nó thường là khi tôi mã hóa một phương thức trả về Danh sách một thực thể (như List<Customer> hoặc List<Employee> trong cơ sở dữ liệu Northwind), nó hoạt động tốt. Theo thời gian, tôi không thể trả lại một Danh sách bất kỳ cái nào trong số đó, và chỉ có thể lấy một thực thể. Bây giờ, nó đã đến một điểm mà tôi có thể trả lại một số List<string> hoặc List<int>, nhưng không phải là một Danh sách hoặc một cá thể của bất kỳ thực thể nào. Khi tôi cố gắng để có được một List<AnyEntity>, phản hồi là 200/OK, nhưng tiêu đề phản hồi và nội dung trống.

Tôi đã thử sử dụng trình gỡ rối và Bảng điều khiển Web của Firefox. Sử dụng WC của FF, tôi chỉ có thể nhận được mã trạng thái "không xác định". Tôi không chắc phải đi đâu từ đây.

EDIT: Trong cố gắng để lấy tất cả khu vực từ cơ sở dữ liệu, tôi làm điều này:

[WebGet(UriTemplate = "areas")] 
public List<a1Areas> AllAreas() 
{ 
    return context.a1Areas.ToList(); 
} 

tôi sẽ đánh giá cao bất kỳ phương pháp hơn để gỡ lỗi này. Cảm ơn trước.

Tìm câu trả lời, cảm ơn Merlyn!

Trong tệp Global.asax của mình, tôi đã quên nhận xét hai dòng đã quản lý proxy và xử lý đối tượng ngữ cảnh của tôi. Mã này là dưới đây:

void Application_BeginRequest(object sender, EventArgs e) 
{ 
    var context = new AssignmentEntities(); 
    context.Configuration.ProxyCreationEnabled = false; 
    HttpContext.Current.Items["_context"] = context; 
} 

void Application_EndRequest(object sender, EventArgs e) 
{ 
    var context = HttpContext.Current.Items["_context"] as AssignmentEntities; 
    if (context != null) 
    { 
    context.Dispose(); 
    } 
} 
+1

Bạn đang trở về đơn vị trực tiếp cho khách hàng? Điều này có thể không hoạt động theo cách bạn mong muốn, do proxy của tổ chức/tải chậm. Bạn có thể cung cấp một số mã cho các phương thức dịch vụ của mình không? Ngoài ra, Fiddler là một công cụ tốt để gỡ lỗi các yêu cầu. Việc lấy dữ liệu yêu cầu và phản hồi ra khỏi đó và dán vào câu hỏi cũng có thể hữu ích. –

+0

Cảm ơn thông tin! :) Làm thế nào để bối cảnh của bạn được tạo ra/xử lý? –

+0

Xin chào! Có, tôi trả lại các thực thể trực tiếp cho khách hàng. Đối với việc sử dụng Fiddler, câu trả lời là: HTTP/1.1 504 Fiddler - Nhận lỗi Loại nội dung: văn bản/html; charset = UTF-8 Kết nối: đóng Dấu thời gian: 22: 49: 24.129 ReadResponse() không thành công: Máy chủ không trả về phản hồi cho yêu cầu này. – daoberes

Trả lời

Các vấn đề liên quan