CSS, hình ảnh, JS không tải trong IIS


126

Tất cả các ứng dụng của tôi đều hoạt động tốt nhưng đột nhiên tất cả các trang web trong IIS không tải css, hình ảnh, tập lệnh. Nó chuyển hướng đến trang đăng nhập.

Nếu tôi đăng nhập nó hoạt động tốt. ví dụ: mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

Trên máy cục bộ của tôi, nó hoạt động tốt mà không cần đăng nhập.


gắn thẻ sai, không phải câu hỏi thực sự ...
Renatas M.

3
Quay trở lại phiên bản được gắn thẻ vì tôi nghĩ rằng tôi biết điều gì gây ra hành vi này và các thẻ có liên quan. Nếu không, tôi sẽ bỏ phiếu để đóng.
Tim Medora

Nó không phải là vấn đề với cấu hình web này, tôi đã thử tất cả các câu trả lời. Tôi nghĩ đó là vấn đề với IIS vì tất cả các trang web đều hoạt động tốt trước khi tôi triển khai một ứng dụng, nó ảnh hưởng đến tất cả trên iis
Imran Rashid

@ImranRashid - trang web này có kế thừa cài đặt từ một trang web khác trong IIS không?
Tim Medora

@Tim Medora - Không thưa ông, nó không được kế thừa từ trang khác.
Imran Rashid

Câu trả lời:


185

Vấn đề có thể là IIS không phục vụ Nội dung tĩnh mà bạn có thể thiết lập tại đây: nhập mô tả hình ảnh ở đây

Nguồn: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/

Windows 10:

phiên bản windows 10 của hộp thoại trên


2
Tôi đã có một vấn đề tương tự, nhận ra đó là một vấn đề cài đặt, nhưng cho phép nội dung tĩnh dường như đã khắc phục nó!
ife labolz

5
Điều này đã lưu thịt xông khói của tôi, bạn sẽ nghĩ rằng nó được bật theo mặc định nhưng trên windows 10 thì không.
Justin

3
Lame này không được kiểm tra theo mặc định.
RayLovless

3
@RayLovless Tôi nghĩ điều khập khiễng là MVC mất một sự phụ thuộc lớn vào tính năng IIS này được kích hoạt để nội dung tĩnh hoạt động trong MVC. Tôi nghĩ rằng họ không nên được kết nối như vậy. Có lẽ .NET Core sẽ khắc phục điều này. : p
Matt Kocaj

2
Aaand ở đây chúng tôi một lần nữa, được cứu bởi cùng một câu trả lời, 2 năm sau lần cuối cùng.
Eric Wu

176

Tôi gặp vấn đề tương tự, một trang không được xác thực sẽ không tải CSS, JS và Hình ảnh khi tôi cài đặt ứng dụng web của mình trong ASP.Net 4.5 trong IIS 8.5 trên Windows Server 2012 R2.

  1. Tôi đã cài đặt vai trò nội dung tĩnh
  2. Ứng dụng web của tôi nằm trong thư mục wwwroot của IIS và tất cả các quyền của Thư mục Windows vẫn còn nguyên vẹn (các quyền mặc định, bao gồm IIS_IUSRS)
  3. Tôi đã thêm ủy quyền cho tất cả các thư mục chứa CSS, JS và hình ảnh.
  4. Tôi đã có thư mục ứng dụng web trên một chia sẻ windows, vì vậy tôi đã xóa chia sẻ theo đề xuất của @ imran-rashid

Tuy nhiên, dường như không có gì để giải quyết vấn đề. Sau đó, cuối cùng tôi đã thử đặt danh tính của người dùng ẩn danh thành Danh tính nhóm ứng dụng và nó bắt đầu hoạt động.

Nhấp vào Tính năng xác thực Chỉnh sửa xác thực ẩn danh Thay đổi nhận dạng nhóm ứng dụng

Tôi đập đầu mình trong vài giờ và hy vọng rằng phản ứng này sẽ tiết kiệm sự đau đớn cho các nhà phát triển đồng nghiệp của tôi.

Tôi thực sự muốn biết tại sao điều này đang làm việc. Có suy nghĩ gì không?


1
Điều này cũng làm việc cho tôi. Tôi tin rằng điều này là do "Người dùng cụ thể" không có quyền đối với vị trí thư mục, nơi nhận dạng của nhóm ứng dụng.
dcinadr

4
Vài giờ ? Nó đã đưa tôi hơn 4. Cảm ơn chúa, nó đã giúp tôi :)
Tito

3
Tôi đã gặp vấn đề này đột ngột, sau khi chia sẻ thư mục wwwroot. Giải pháp của bạn đã sửa nó. Cảm ơn đã dành thời gian để thêm nó, và cho các chi tiết.
Tài nguyên

1
HUYỀN THOẠI! Cảm ơn rất nhiều
David

1
Đây là lần thứ 2 tôi phải tìm kiếm bài viết của bạn, b / c nó đã lưu tôi hai lần bây giờ. Tôi sẽ nâng bạn lên 100 lần nếu tôi có thể. Đã sử dụng Umbraco - thiết lập IIS cục bộ của tôi bằng Documents \ Visual Studio 2013 \ Project - đã thêm CPUName\IIS_IUSRSvà vẫn không tải. Cảm ơn một lần nữa!
Rob Scott

18

Tôi đã có một lỗi tương tự, giao diện điều khiển của tôi trông như thế này:

lỗi

Vấn đề của tôi là tôi đã chạy trang web của mình trong một thư mục con vì công ty đang sử dụng một tên miền hàng đầu và không có tên miền phụ. Như thế này:

máy chủ.com / app1

máy chủ.com / app2

Mã của tôi trông như thế này để bao gồm các tập lệnh hoạt động tốt trên localhost nhưng không có trong app1 hoặc app2:

<link rel="stylesheet" type="text/css" href="/Content/css/font-awesome.min.css" />

Đã thêm dấu hiệu dấu ngã ~vào src và sau đó mọi thứ hoạt động:

<link rel="stylesheet" type="text/css" href="~/Content/css/font-awesome.min.css" />

Giải thích về ~vs /:

  • / - Trang web gốc
  • ~/ - Thư mục gốc của ứng dụng

/sẽ trả về thư mục gốc của trang web ( http://host.com/),

~/sẽ trả về thư mục gốc của ứng dụng ( http://host.com/app1/).


1
bỏ phiếu. Tôi đã gặp vấn đề này, ứng dụng không có gì tải trên sân khấu mà là tải về sản xuất. Tôi cũng sử dụng @ Url.Content () với ~ /. Không được thử nghiệm trên sản xuất, nhưng tôi nghĩ nó sẽ hoạt động
Kross

17

Hãy thử loại bỏ phần staticContent khỏi web.config .

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>

Loại bỏ staticContent hoạt động nhưng bây giờ tất cả các phông chữ của tôi là 404?
Rajesh Sivasankaran

Tôi không phải là chuyên gia về vấn đề này, nhưng có lẽ bạn cần thêm khai báo loại MIME chính xác cho phông chữ của mình thông qua Trình quản lý IIS trong tab Tiêu đề HTTP của thuộc tính trang web.
intrepidis

1
Điều này đã giải quyết vấn đề cho tôi, vì tôi có một số mục nhập tệp .woff đang được phát triển, nhưng khi sản xuất cùng một thiết lập cần điều chỉnh
guideX

Cảm ơn intrepidis, trong trường hợp của tôi đề nghị của bạn đã làm việc cho tôi. Chúc mừng!
dùng752746

15

Điều này có thể không trả lời câu hỏi của bạn nhưng tôi đã đập đầu với những triệu chứng tương tự với cài đặt IIS mới. CSS, JS và hình ảnh không hiển thị. Có phải do vai trò "Nội dung tĩnh" không được cài đặt trong IIS 7.5.


Bạn có thể có vấn đề khác và vấn đề của tôi là khi tôi di chuyển thư mục từ inetpub, nó sẽ xóa quyền khi tôi hoàn nguyên vấn đề của mình.
Imran Rashid

7

Bạn có thể đã bật xác thực Windows trong web.config. Trên máy cục bộ, thông tin đăng nhập Windows của bạn sẽ tự động được thông qua và nó hoạt động. Trên trang web trực tiếp, bạn được coi là người dùng ẩn danh (cài đặt IE có thể kiểm soát điều này, nhưng không sửa đổi điều này trừ khi bạn thực sự biết bạn đang làm gì).

Điều này gây ra những điều sau đây:

  • Bạn được yêu cầu đăng nhập rõ ràng.
  • Các tài nguyên như tập lệnh và CSS không được phục vụ trên trang đăng nhập vì bạn không được xác thực.

Điều này không bị hỏng, chỉ hoạt động như dự định, nhưng để "sửa" điều này:

  • Thay đổi loại xác thực trong web.config nếu bạn không muốn đăng nhập.
  • Và / hoặc thêm một web.config trong (các) thư mục chứa CSS, hình ảnh, tập lệnh, v.v. chỉ định quy tắc ủy quyền.

Chế độ xác thực là hình thức không cửa sổ? ứng dụng tập tin cấu hình web ghi đè cấu hình máy? Có bất kỳ thiết lập nào trong IIS gây ra điều này không?
Imran Rashid

Xác thực mẫu cũng sẽ kích hoạt lời nhắc đăng nhập và ngăn các tài nguyên như tập lệnh và hình ảnh được phục vụ. Xem các câu trả lời khác cho những thay đổi cụ thể mà bạn sẽ cần thực hiện đối với web.config. Lưu cài đặt trong IIS sẽ sửa đổi cấu hình web.
Tim Medora

Tôi tự giải quyết nó. Vấn đề phát sinh khi tôi chia sẻ thư mục wwwroot trên mạng của tôi. Nó thay đổi sự cho phép của thư mục. Khi tôi unshare và đặt quyền thành mặc định. Nó đã được giải quyết :) Cảm ơn Tim
Imran Rashid

6

Thêm phần này vào web.config

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

Đường dẫn là tương đối, đôi khi thêm root sẽ giải quyết điều này. Hãy thử đặt đường dẫn đến"~/Images"
StuperUser 15/05/2015

6

Sử dụng phần này trong phần cấu hình của tệp web.config:

<location path="images">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="css">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="js">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>

6

Đó là vấn đề quyền của windows tôi di chuyển thư mục mà nó thừa hưởng quyền sai. Khi tôi chuyển đến thư mục wwwroot và thêm quyền cho người dùng iis, nó bắt đầu hoạt động tốt.


1
Tôi đã cùng một vấn đề, Chỉ cần di chuyển các tập tin dự án từ desktopđến wwwroot thư mục, bổ sung Tôi đã thêm toàn quyền kiểm soát đến dịch vụ mạng, có liên quan đến các hồ bơi ứng dụng.
mihkov

3

Đối với tôi thêm điều này trong web.configgiải quyết vấn đề

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" >
      <remove name="UrlRoutingModule"/>    
    </modules>
</system.webServer>

2

Giờ đau của tôi là do xác định các loại MIME trong web.config. Tôi cần điều này cho máy chủ phát triển nhưng IIS cục bộ ghét nó vì nó đã sao chép các loại MIME ... một khi tôi xóa chúng khỏi web.config vấn đề với js, css và hình ảnh không tải đã biến mất.


Khó có thể tin rằng nó có thể trùng lặp các loại MIME! Tôi đã lùng sục ít nhất một giờ để thử các quyền người dùng khác nhau, v.v. nhưng cuối cùng lại bị trùng lặp MIME trong web.config: - |
Aaron Hudon

2

Đây là một vấn đề xác thực. Trong trường hợp của tôi, nó được giải quyết bằng các bước dưới đây: 1- Chuyển đến trình quản lý IIS, ở khung bên trái, mở rộng thư mục gốc của máy chủ và chọn ứng dụng web của bạn từ nút Trang web. 2- Trong màn hình chính, đi đến phần IIS và chọn Xác thực. 3- Kích hoạt xác thực ẩn danh. 4- Sau đó, chọn Chỉnh sửa và đặt Chỉnh sửa Thông tin xác thực ẩn danh thành danh tính nhóm ứng dụng.

Thông tin xác thực ẩn danh


Tôi đã làm theo các bước tương tự và vấn đề đã được giải quyết. Cảm ơn Alireza.
Arvind Gautam

1

Trong trường hợp của tôi,

IIS có thể tải mọi thứ với localhost, nhưng không thể tải các tệp mẫu của tôiapp.tag từ192.168.0.123

bởi vì .tagphần mở rộng không có trong danh sách

Các loại IIS MIME


1

Để khắc phục điều này:

Chuyển đến Dịch vụ thông tin Internet (IIS)

Nhấp vào trang web của bạn, bạn đang cố tải hình ảnh trên

Trong phần IIS, Mở menu Xác thực và Bật Xác thực Windows.


1

Một đề nghị tôi đã thấy hữu ích trong quá khứ khi phát triển các trang web trong môi trường thử nghiệm localhost khi làm việc với một bản sao của trang web sản xuất. Hãy chắc chắn rằng bạn nhận xét các thẻ chính tắc:

  <!--<base href="http://www.example.com/">//-->

1

Nếu bạn đã thử tất cả các giải pháp trên mà vẫn gặp sự cố, hãy xem xét sử dụng phương thức ResolveClientUrl () của ASP.NET.

Một kịch bản cho ví dụ:

Thay vì sử dụng

<script src="~/dist/js/app.min.js" ></script>

Sử dụng phương pháp

<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>

Đây là giải pháp của tôi đã làm việc cho một người bạn tôi đang giúp đỡ!


1

Tôi có vấn đề này như nhau. Đối với tôi, đó là do tiêu đề Cache-Control được đặt ở cấp máy chủ trong IIS thành không có bộ đệm, không lưu trữ. Vì vậy, đối với ứng dụng của tôi, tôi đã phải thêm vào bên dưới vào web.config:

<httpProtocol>
    <customHeaders>
        <remove name="Cache-Control" />
    </customHeaders>
</httpProtocol>

0

Một nguyên nhân có thể của việc này là ứng dụng của bạn dự kiến ​​sẽ chạy trên cổng 443 (cổng SSL tiêu chuẩn) và cổng 443 đã được sử dụng. Tôi đã gặp phải điều này nhiều lần với các nhà phát triển đang cố gắng chạy ứng dụng của chúng tôi trong khi Skype đang chạy trên máy tính của họ.

Thật đáng kinh ngạc, Skype chạy trên cổng 443. Đây là một lỗ hổng thiết kế khủng khiếp theo ý kiến ​​của tôi. Nếu bạn thấy ứng dụng của mình đang cố chạy trên 444 thay vì 443, hãy tắt Skype và vấn đề sẽ biến mất.


0

Tôi đã thêm app.UseStaticFiles(); mã này trong starup.cs của phương thức Configure, hơn là nó đã được sửa.

Và kiểm tra sự cho phép của bạn trên thư mục này.


0

Đối với hình ảnh sử dụng

@Url.Content("~/assets/bg4.jpg")

trên Kiểu sử dụng cái này

style="background-image:url(@Url.Content("~/assets/bg4.jpg"))

0

Trong trường hợp của tôi khi không có tệp javascript, png hoặc css nào của tôi được tải, tôi đã thử hầu hết các câu trả lời ở trên và dường như không có câu hỏi nào.

Cuối cùng tôi đã tìm thấy " Bộ lọc yêu cầu " và thực sự phải thêm .js, .png, .css dưới dạng loại tệp được bật / chấp nhận.

Khi tôi thực hiện thay đổi này, tất cả các tệp đã được phục vụ đúng cách.


0

Nếu bạn thấy 403 lỗi trong bảng điều khiển trình duyệt, hãy kiểm tra Cấu hình gói Bundle MVC của bạn. Tên gói không được khớp với bất kỳ tên thư mục hiện có trong dự án của bạn.

ví dụ.

bundles.Add(new StyleBundle("~/Content/css")...

... sẽ gây ra sự cố cho IIS nếu cấu trúc thư mục $ (ProjectDir) \ Content \ css tồn tại trong dự án của bạn, vì nó cố gắng tìm trong thư mục hiện tại để tìm nội dung gói không có ở đó.

Thay vào đó chỉ sử dụng một cái gì đó như:

bundles.Add(new StyleBundle("~/Content/cssbundle")...

0

Sự cố này xảy ra khi IIS không hiển thị nội dung tĩnh như các tệp JS, CSS, Image của bạn.

Để giải quyết vấn đề này, bạn cần làm theo các bước dưới đây:

GO đến Bảng điều khiển> Bật hoặc tắt các tính năng của Windows> Dịch vụ thông tin Internet> Dịch vụ web toàn cầu> Các tính năng HTTP phổ biến> Nội dung tĩnh.

Đảm bảo rằng nội dung tĩnh được bật.

Chơi lô tô. Và bạn đã hoàn thành. Tải lại trang cứng và bạn sẽ có thể xem tất cả các nội dung tĩnh.


0

Tôi đã có cùng một vấn đề, đã thử tất cả các đề xuất nhưng không có gì. Đã làm phiền tôi hàng giờ. Hóa ra ISP của tôi bị chặn cổng 80 vì một số lý do.

Lời khuyên: kiểm tra lưu lượng của bạn. Đảm bảo rằng cổng 80 hoạt động cả cục bộ (tức là tường lửa) và bên ngoài.

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.