2013-05-08 21 views
11

Tôi có một phương pháp Web API trả về một danh sách các sự kiện:Làm cách nào để sửa đổi cài đặt kích thước phản hồi được phép mặc định cho Ứng dụng API Web?

public HttpResponseMessage GetEvents() 
{ 
... 
} 

Dịch vụ của tôi hỗ trợ cả hai phản ứng Xml và JSON sử dụng DataContractSerializer (đối với xml) và DataContractJsonSerializer (đối với JSON).

Kích thước phản hồi có thể là 30MB.

Kích thước phản hồi cho phép mặc định trong ASP.NET Web API được lưu trữ trong IIS là gì?

Cách sửa đổi cài đặt mặc định?

Cách tốt nhất để trả lại dữ liệu lớn như vậy (mặc dù nó không lớn như vậy)?

Tôi có nên nén phản hồi không?

Ngoài ra, chúng tôi có thể nhận được một yêu cầu mỗi giây.

Cảm ơn

Trả lời

11

Tôi không chắc chắn về sự cố của bạn. Vì Response không giới hạn kích thước. Chúng tôi có thể giới hạn kích thước phản hồi bằng cách thêm thông số Content-Length vào tiêu đề phản hồi. Vì vậy, tôi giả sử bạn sẽ có hai vấn đề như sau:

1. Yêu cầu có giới hạn: Để giải quyết nó, bạn nên tăng kích thước yêu cầu để nó có thể nhận được phản ứng kích thước lớn. Để tăng kích thước yêu cầu bạn đưa vào web.config như sau:

<system.web> 
<httpRuntime maxRequestLength="2147483647" /> 

2. Bạn có phản ứng kích thước bộ đệm là hạn chế ngoại lệ:

Hãy làm theo các link từ MSDN.

EDIT:

gì mặc định kích thước đáp ứng được cho phép trong ASP.NET Web API được tổ chức trong IIS?

Kích thước phản hồi sẽ tự động nhận kích thước theo kích thước của thư mà chúng tôi đưa vào. Và nó có giới hạn về kích thước phản hồi. HttpReponseMessage thực sự là một phản hồi tương tự như tôi đã đăng ở trên.

Cách tốt nhất để trả lại dữ liệu lớn như vậy (mặc dù nó không phải là lớn)?

Bạn nên dùng link. Các phương pháp hay nhất để xử lý dữ liệu là chuyển đổi thành dữ liệu nhị phân và chuyển nó thành nhiều phần nhỏ.

Tôi có nên nén phản hồi không?

Phụ thuộc vào ngữ cảnh của bạn. IIS 7.0 đã cho phép bạn định cấu hình phản hồi zip nhưng hãy chú ý đến mã của bạn tại máy khách đã hỗ trợ phản hồi zip hay không.

+1

Câu hỏi của tôi là về kích thước phản ứng trong ASP.NET MVC Web Services API. –

+0

Liên kết đó dành cho các trang ASP có giới hạn bộ đệm 4MB. Tôi không nghĩ rằng các cài đặt tương tự nên áp dụng cho API Web? –

+1

Chúng giống nhau, Web Api HttpResponseMessage chỉ bao bọc trên http Response. –

6

thử mã này trong web.config của bạn nó giải quyết vấn đề của tôi

<configuration> 
     <system.web.extensions> 
      <scripting> 
       <webServices> 
        <jsonSerialization maxJsonLength="50000000"/> 
       </webServices> 
      </scripting> 
     </system.web.extensions> 
    </configuration> 
Các vấn đề liên quan