IIS 7.5 không tải các trang html tĩnh


10

Có một IIS 7.5 mới được cài đặt trên một máy chủ chuyên dụng. Ứng dụng web ASP.NET 4.0 được sao chép vào thư mục của nó, trang web mới được tạo trên IP của chính nó trên bài 80, tài khoản IIS_IUSR và IUSR có quyền đọc / thực thi trên thư mục của trang web, trang web được gán cho nhóm ứng dụng tích hợp của riêng nó với 4.0 .NET (Tôi đã thử Classic pool với kết quả tương tự).

Vấn đề: khi tôi cố truy cập trang web này, trình duyệt chỉ tải nội dung được tạo bởi các tài nguyên .NET như trang aspx, tệp .axd, v.v. Hình ảnh tĩnh, tệp js tĩnh, css và html nằm trong nguồn trang nhưng IIS không Sẽ phục vụ họ. Các công cụ dev trong tất cả các trình duyệt phàn nàn rằng tất cả các tài nguyên tĩnh đó đã được máy chủ gửi với loại nội dung sai (văn bản thuần thay vì hình ảnh, kiểu, v.v.). Tôi làm gì sai?


Bạn thấy gì trong Fiddler (hoặc Fireorms)?
SLaks

Nếu điều này có thể chạy trang trên máy chủ, đặc biệt chạy một mình nội dung tĩnh trên máy chủ và bạn nhận được báo cáo lỗi chi tiết đầy đủ.
Aristos

Tôi không sử dụng Fireorms. Nhưng Chrome chẳng hạn, phàn nàn "Tài nguyên được hiểu là Hình ảnh nhưng được chuyển bằng văn bản loại MIME / thuần túy" về một tệp jpg trên trang. Tương tự cho tất cả các kiểu, js và các trang html tĩnh. Ngoài ra, tải động của các tập lệnh và html không hoạt động.

@ Aristos: Tôi đã làm điều đó. Trình duyệt của máy chủ hiển thị trang giống như cách các trình duyệt bên ngoài thực hiện. Không có lỗi, chỉ là trang không đầy đủ.

Người dùng đang chạy máy chủ web có quyền đọc các tệp đó không?
Lục M

Câu trả lời:


12

IIS 7 / 7.5 có một "tính năng" mới - Dịch vụ Vai trò. Bài đăng từ rsbarro nhắc nhở tôi rằng có một dịch vụ vai trò chịu trách nhiệm về nội dung tĩnh. Đó là Máy chủ Web / Các tính năng HTTP phổ biến / Nội dung tĩnh. Kiểm tra xem biểu tượng MIME Forms có trong Trình quản lý IIS không, như rsbarro đề xuất.

Bạn cần cài đặt dịch vụ vai trò Nội dung tĩnh nếu không. Để làm điều đó, chọn:

  • Quản lý máy chủ
  • Vai trò
  • Nút Máy chủ Web (IIS) từ khung bên trái
  • cuộn đến cửa sổ Dịch vụ Vai trò
  • xem nếu dịch vụ vai trò Nội dung tĩnh được cài đặt.

Từ những gì bạn mô tả, đây dường như là vấn đề của bạn.

Nói chung, nếu IIS7 không làm điều gì đó mà IIS6 đã làm, điều đầu tiên cần kiểm tra là xem dịch vụ vai trò tương ứng có được cài đặt hay không. Hi vọng điêu nay co ich.


Vai trò nội dung tĩnh, làm thế nào tôi bỏ lỡ điều đó? Cảm ơn, đã khắc phục vấn đề một cách hoàn hảo.
David Thomas Garcia

6

Trong IIS, truy cập trang web của bạn và kiểm tra phần MIME Type (xem hình ảnh bên dưới). Đảm bảo bạn thấy các mục trong danh sách đó cho .js, .css, .html, v.v. và chúng có loại MIME phù hợp được chỉ định. IIS 7.5 sẽ chỉ phục vụ các trang nếu có loại MIME được chỉ định. Theo mặc định, các loại MIME cho các tiện ích mở rộng này được thiết lập trong applicationHost.configtệp nằm trong C:\Windows\system32\inetsrv\configthư mục (bạn có thể phải chạy notepad với tư cách Quản trị viên để xem tệp). Chỉ cần tìm kiếm .js và bạn sẽ tìm thấy một mục <mimeMap>trong <staticContent>phần tử.

iis loại mime

Các cài đặt này có thể được ghi đè trong web.configtệp của bạn . Nếu là họ, họ sẽ xuất hiện ở vị trí sau trong web.config:

<system.webServer>
    <staticContent>
        <remove fileExtension=".js" />
    </staticContent>
</system.webServer>

Tôi chắc chắn sẽ bắt đầu bằng cách kiểm tra ở đó. Nếu mọi thứ đều ổn trong phần loại MIME, thì có thể bạn có một mô-đun can thiệp vào các yêu cầu cho tệp tĩnh (nhưng rất có thể chỉ khi bạn đã <modules runAllManagedModulesForAllRequests="true" />đặt trong <system.webServer>phần của mình ). Nếu đó là trường hợp tôi sẽ xóa tất cả các thiết lập mô-đun trong của bạn web.configvà xem liệu bạn có thể hiển thị các tệp tĩnh không, sau đó lắp lại từng cái một để xem mô-đun nào gây ra sự cố. Nếu bạn không thể tìm ra thì tôi khuyên bạn nên đăng nội dung của bạn web.config(hoặc ít nhất là system.websystem.webServercác phần) trong câu hỏi.


2

Tôi gặp vấn đề tương tự, nhưng nhóm ứng dụng của tôi đang chạy trong tài khoản miền và người dùng đó có quyền đối với thư mục trang web. Trang web của tôi hiển thị aspx nhưng không có nội dung tĩnh. Điều đã giải quyết vấn đề của tôi là thêm nhóm IIS_IUSRS vào chính sách bảo mật cục bộ có tên là "mạo danh khách hàng sau khi xác thực '". Nhóm IIS_IUSRS có tài khoản miền của tôi trong đó. Tôi đang chạy máy chủ iis 7.5 windows 2008.


Ước gì tôi có thể nâng cao hơn một lần. Tôi đã đến câu hỏi này trong khi tìm kiếm lý do tại sao các tệp .css của tôi không được IIS phục vụ. Nó liên quan đến quyền của Windows trên các thư mục nơi chúng được lưu trữ.
2b77bee6-5445-4c77-b1eb-4df3e5
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.