2012-05-29 21 views
5

Tôi đã làm việc để bật tính năng nén JSON từ một trong các trang MVC3 của chúng tôi. Từ các bài viết khác nhau tôi đã đọc nó có vẻ như là tôi có thể đặt loại MIME application/json; charset=utf-8 trong tệp web.config của ứng dụng. Nhưng làm như vậy không cho phép nén. Nhưng khi được thêm vào tệp applicationhost.config, nó hoạt động. Am i thiếu cái gì ở đây?IIS 7.5 không nén JSON khi được đặt trong ứng dụng web.config

ứng dụng web.config của tôi có những sản phẩm sau được thêm vào nó:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> 
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" /> 
    <dynamicTypes> 
     <add mimeType="application/javascript; charset=utf-8" enabled="true" /> 
     <add mimeType="application/x-javascript" enabled="true" /> 
     <add mimeType="application/json" enabled="true" /> 
     <add mimeType="application/json; charset=utf-8" enabled="true" /> 
    </dynamicTypes> 
    <staticTypes> 
     <add mimeType="application/javascript; charset=utf-8" enabled="true" /> 
     <add mimeType="application/x-javascript" enabled="true" /> 
     <add mimeType="application/json" enabled="true" /> 
     <add mimeType="application/json; charset=utf-8" enabled="true" /> 
    </staticTypes> 
</httpCompression> 
<urlCompression doStaticCompression="true" doDynamicCompression="true" /> 

Các máy chủ đang chạy Windows Server 2008 R2 với IIS7.5. Tôi cũng đã cài đặt & Đã bật Nén động cho trang web được đề cập.

Mọi trợ giúp sẽ được đánh giá cao, vì tôi không muốn bật tính năng nén JSON cho toàn bộ máy chủ.

+0

Vui lòng xem bài đăng này: stackoverflow.com/a/7634875/1131855 Tôi không thể chỉnh sửa applicationHost.config qua Notepad ++. Liên kết này đề nghị một lệnh giao diện điều khiển làm việc cho tôi –

Trả lời

10

HttpCompression phần được xác định AppHostOnly trong ApplicationHost.config ngăn bạn đặt thuộc tính của nó trong web.config.

Mô-đun nén chỉ đọc các thuộc tính cấp máy chủ từ 'ApplicationHost.config' vì vậy ngay cả khi bạn mở khóa phần (với appcmd hoặc overrideModeDefault="Allow"), cài đặt ở cấp thấp hơn sẽ bị bỏ qua.

+0

Cảm ơn vì điều đó, nó xóa bỏ sự nhầm lẫn. Nó chỉ ra rằng ngay cả khi bạn thêm một phần tử vào ApplicationHost.config cho một trang web để thử và cho phép HttpCompression ở cấp trang web, nó vẫn bị khóa vì thuộc tính AppHostOnly. Cách duy nhất là thêm kiểu ứng dụng/json MIME vào phần "toàn cầu" trong ApplicationHost.config và do đó bật nó lên cho tất cả các trang web trên máy chủ. –

+0

@tpeczek 'Mô-đun nén chỉ đọc các thuộc tính mức máy chủ từ 'ApplicationHost.config'' Bạn có nguồn cho điều đó không? Tôi không thể tìm thấy * bất cứ điều gì * chính thức từ Microsoft, mặc dù nó hoàn toàn có vẻ là trường hợp, đặc biệt là với IIS8 + – theyetiman

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