CSS, Gambar, JS tidak memuat di IIS

126

Semua aplikasi saya berfungsi dengan baik tetapi tiba-tiba semua situs di bawah IIS tidak memuat css, gambar, skrip. Ini mengarahkan ke halaman login.

Jika saya login berfungsi dengan baik. mis. mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

Di mesin lokal saya berfungsi dengan baik tanpa login.

Imran Rashid
sumber
salah penandaan, bukan pertanyaan sebenarnya ...
Renatas M.
3
Kembalikan ke versi yang ditandai karena saya rasa saya tahu apa yang menyebabkan perilaku ini dan tag tersebut relevan. Jika tidak, saya akan memilih untuk menutup.
Tim Medora
Tidak masalah dengan konfigurasi web ini. Saya telah mencoba semua jawaban. Saya pikir itu masalah dengan IIS karena semua situs berfungsi dengan baik sebelum saya menyebarkan satu aplikasi itu efeknya semua pada iis
Imran Rashid
@ImranRashid - apakah situs ini mewarisi pengaturan dari situs lain di IIS?
Tim Medora
@Tim Medora - Tidak, tuan tidak mewarisi dari situs lain.
Imran Rashid

Jawaban:

185

Masalahnya mungkin karena IIS tidak menayangkan Konten Statis, yang dapat Anda atur di sini: masukkan deskripsi gambar di sini

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

Windows 10:

windows 10 versi dialog di atas

Matt Kocaj
sumber
2
Saya memiliki masalah yang sama, menyadari itu adalah masalah instalasi, tetapi mengaktifkan konten statis tampaknya telah memperbaikinya!
ife labolz
5
Ini menghemat bacon saya, Anda akan berpikir ini diaktifkan secara default tetapi pada windows 10 tidak.
Justin
3
Lame this tidak dicentang secara default.
Ray tanpa cinta
3
@RayLoveless Saya pikir yang timpang adalah bahwa MVC sangat bergantung pada fitur IIS yang diaktifkan agar konten statis berfungsi di MVC. Saya pikir mereka tidak seharusnya begitu. Mungkin .NET Core akan memperbaiki ini. : p
Matt Kocaj
2
Aaand di sini kita lagi, diselamatkan oleh jawaban yang sama, 2 tahun setelah dari yang terakhir kali.
Eric Wu
176

Saya memiliki masalah yang sama, halaman yang tidak diauthentikasi tidak akan memuat CSS, JS dan Gambar ketika saya menginstal aplikasi web saya di ASP.Net 4.5 di IIS 8.5 pada Windows Server 2012 R2.

  1. Saya telah menginstal peran konten statis
  2. Aplikasi Web saya ada di folder wwwroot IIS dan semua izin Folder Windows masih utuh (yang default, termasuk IIS_IUSRS)
  3. Saya menambahkan otorisasi untuk semua folder yang berisi CSS, JS dan gambar.
  4. Saya memiliki folder aplikasi web pada share windows, jadi saya menghapus sharing seperti yang disarankan oleh @ imran-rashid

Namun, sepertinya tidak ada yang menyelesaikan masalah. Lalu akhirnya saya mencoba mengatur identitas pengguna anonim ke App Pool Identity dan mulai berfungsi.

Klik pada Fitur Otentikasi Edit Otentikasi Anonim Ubah ke App Pool Identity

Saya membenturkan kepalaku selama beberapa jam dan berharap bahwa respons ini akan menyelamatkan penderitaan bagi sesama pengembang.

Saya benar-benar ingin tahu mengapa ini berhasil. Adakah pikiran?

Moiz Tankiwala
sumber
1
Ini juga bekerja untuk saya. Saya percaya ini karena "Pengguna spesifik" tidak memiliki izin ke lokasi folder, di mana identitas kumpulan aplikasi tidak.
dcinadr
4
Beberapa jam ? Butuh waktu lebih dari 4. Terima kasih Tuhan, itu membantu saya :)
Tito
3
Saya mendapat masalah ini tiba-tiba, setelah berbagi folder wwwroot. Solusi Anda memperbaikinya. Terima kasih telah meluangkan waktu untuk menambahkannya, dan untuk detailnya.
Resource
1
LEGENDA! Terima kasih banyak
David
1
Ini adalah ke-2 kalinya saya harus mencari posting Anda, tapi itu menyelamatkan saya dua kali sekarang. Saya akan mendukung Anda 100x jika saya bisa. Sedang menggunakan Umbraco - setel IIS lokal saya menggunakan Documents \ Visual Studio 2013 \ Projects - ditambahkan CPUName\IIS_IUSRSdan masih tidak mau dimuat. Terima kasih lagi!
Rob Scott
18

Saya memiliki kesalahan yang serupa, konsol saya terlihat seperti ini:

kesalahan

Masalah saya adalah saya menjalankan situs saya dalam sub folder karena perusahaan menggunakan satu domain teratas dan tidak ada sub domain. Seperti ini:

host.com/app1

host.com/app2

Kode saya terlihat seperti ini untuk menyertakan skrip yang bekerja dengan baik di localhost tetapi tidak di app1 atau app2:

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

Menambahkan tanda tilde ~ke src dan kemudian semuanya bekerja:

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

Penjelasan ~vs /:

  • / - Root situs
  • ~/ - Direktori root aplikasi

/akan mengembalikan akar situs ( http://host.com/),

~/akan mengembalikan root aplikasi ( http://host.com/app1/).

Ogglas
sumber
1
suara. Saya mengalami masalah ini, aplikasi tidak memuat di atas panggung tetapi memuat pada produksi. Saya menggunakan @ Url.Content () juga dengan ~ /. Tidak diuji pada produksi, tapi saya pikir itu akan berhasil
Kross
17

Coba hapus bagian staticContent dari web.config Anda .

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>
intrepidis
sumber
Menghapus staticContent berfungsi tetapi sekarang semua font saya adalah 404?
Rajesh Sivasankaran
Saya bukan ahli dalam hal ini, tetapi mungkin Anda perlu menambahkan deklarasi tipe MIME yang tepat untuk font Anda melalui IIS Manager di tab Header HTTP properti situs web.
intrepidis
1
Ini memecahkan masalah bagi saya, karena saya memiliki beberapa entri file .woff di sana dalam pengembangan, tetapi pada pengaturan produksi yang sama perlu penyesuaian
guideX
Terima kasih intrepidis, dalam kasus saya saran Anda berhasil untuk saya. Bersulang!
user752746
15

Ini mungkin tidak menjawab pertanyaan Anda tetapi saya telah membenturkan kepala saya dengan gejala yang sama dengan instalasi IIS baru. CSS, JS, dan gambar tidak muncul. Karena peran "Konten Statis" tidak diinstal di IIS 7.5.

pengguna23462
sumber
Anda mungkin memiliki masalah yang berbeda dan masalah saya adalah ketika saya memindahkan direktori dari inetpub itu menghapus izin ketika saya mengembalikan masalah saya telah diperbaiki.
Imran Rashid
7

Anda mungkin mengaktifkan otentikasi Windows di web.config Anda. Di mesin lokal, kredensial Windows Anda secara otomatis diteruskan dan berfungsi. Di situs langsung, Anda diperlakukan sebagai pengguna anonim (pengaturan IE dapat mengontrol ini, tetapi jangan modifikasi ini kecuali Anda benar-benar tahu apa yang Anda lakukan).

Ini menyebabkan hal-hal berikut:

  • Anda diharuskan untuk masuk secara eksplisit.
  • Sumber daya seperti skrip dan CSS tidak disajikan pada halaman login karena Anda tidak diautentikasi.

Ini tidak rusak, hanya berfungsi sebagaimana dimaksud, tetapi untuk "memperbaiki" ini:

  • Ubah jenis otentikasi di web.config jika Anda tidak ingin login.
  • Dan / atau tambahkan web.config di direktori yang berisi CSS, gambar, skrip, dll. Yang menentukan aturan otorisasi.
Tim Medora
sumber
mode otentikasi adalah Formulir bukan jendela? aplikasi web file konfigurasi menimpa konfigurasi mesin? Apakah ada pengaturan di IIS yang menyebabkan ini?
Imran Rashid
Otentikasi formulir juga akan memicu prompt masuk dan mencegah sumber daya seperti skrip dan gambar tidak dilayani. Lihat jawaban lain untuk perubahan spesifik yang perlu Anda buat ke web.config. Menyimpan pengaturan di IIS akan mengubah konfigurasi web.
Tim Medora
Saya menyelesaikannya sendiri. Masalah muncul ketika saya berbagi folder wwwroot di jaringan saya. Itu mengubah izin direktori. Ketika saya berhenti berbagi dan mengatur izin ke default. Itu diselesaikan :) Terima kasih Tim
Imran Rashid
6

Tambahkan ini ke web.config Anda

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
Mathias F
sumber
Path relatif, terkadang menambahkan root akan menyelesaikan ini. Coba atur path ke"~/Images"
StuperUser
6

Gunakan ini di bagian konfigurasi file web.config Anda:

<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>
Rohit Vyas
sumber
6

Itu masalah izin windows saya memindahkan folder itu mewarisi izin yang salah. Ketika saya pindah ke folder wwwroot dan menambahkan izin untuk pengguna iis itu mulai berfungsi dengan baik.

Imran Rashid
sumber
1
Saya memiliki masalah yang sama, Baru saja memindahkan file proyek dari desktopke wwwroot folder, selain itu saya telah menambahkan kontrol penuh ke layanan jaringan, yang terkait dengan kumpulan aplikasi.
mihkov
3

Bagi saya menambahkan ini dalam web.configmenyelesaikan masalah

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

Jam kesakitan saya adalah karena mendefinisikan tipe MIME di web.config. Saya memerlukan ini untuk server pengembangan tetapi IIS lokal membencinya karena itu menduplikasi tipe MIME ... setelah saya menghapus ini dari web.config masalah dengan js, css, dan gambar tidak memuat hilang.

peroija
sumber
Sulit dipercaya itu bisa menjadi duplikat tipe MIME! Saya menjelajahi setidaknya satu jam untuk mencoba izin pengguna yang berbeda, dll, tetapi akhirnya menjadi duplikat MIME di web saya. Config: - |
Aaron Hudon
2

Ini adalah masalah otentikasi. Dalam kasus saya, ini diselesaikan dengan langkah-langkah di bawah ini: 1- Buka IIS manager, di panel kiri, perluas root server dan pilih aplikasi web Anda dari situs Sites. 2- Di layar Utama, buka bagian IIS dan pilih Otentikasi. 3- Aktifkan Otentikasi Anonim. 4- Lalu, pilih Edit dan atur Edit Kredensial Autentikasi Anonim ke identitas kumpulan Aplikasi.

Kredensial Otentikasi Anonim

Alireza Abdollahnejad
sumber
Saya mengikuti langkah yang sama dan masalah terselesaikan. Alireza terima kasih.
Arvind Gautam
1

Dalam kasus saya,

IIS dapat memuat segala sesuatu dengan localhost, tapi tidak bisa memuat file template saya app.tagdari192.168.0.123

karena .tagekstensi itu tidak ada dalam daftar.

Jenis IIS MIME

Hai
sumber
1

Untuk memperbaikinya:

Pergi ke Layanan Informasi Internet (IIS)

Klik situs web tempat Anda memuat gambar

Di bawah bagian IIS, Buka menu Otentikasi dan Aktifkan Otentikasi Windows juga.

Naijalivemedia
sumber
1

Satu saran yang saya temukan sangat membantu di masa lalu ketika mengembangkan situs di lingkungan pengujian localhost ketika bekerja dengan salinan situs produksi. Pastikan Anda mengomentari tag kanonik:

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

Jika Anda mencoba semua solusi di atas dan masih memiliki masalah, pertimbangkan untuk menggunakan metode ResolveClientUrl () dari ASP.NET.

Sebuah skrip untuk Contoh:

Alih-alih menggunakan

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

Gunakan metodenya

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

Ini adalah solusi saya yang berhasil untuk teman yang saya bantu!

KeitelDOG
sumber
1

Saya punya masalah yang sama. Bagi saya, itu karena header Cache-Control ditetapkan di tingkat server di IIS ke no-cache, no-store. Jadi untuk aplikasi saya, saya harus menambahkan di bawah ini ke web.config saya:

<httpProtocol>
    <customHeaders>
        <remove name="Cache-Control" />
    </customHeaders>
</httpProtocol>
Daniel Cox
sumber
0

Salah satu kemungkinan penyebabnya adalah aplikasi Anda berharap untuk berjalan di port 443 (port SSL standar) dan port 443 sudah digunakan. Saya telah mengalami beberapa kali ini dengan pengembang mencoba menjalankan aplikasi kami saat Skype berjalan di komputer mereka.

Luar biasa, Skype berjalan pada port 443. Ini adalah kesalahan desain yang mengerikan menurut saya. Jika Anda melihat aplikasi Anda mencoba dijalankan pada 444 alih-alih 443, matikan Skype dan masalahnya akan hilang.

Robert MacGrogan
sumber
0

Saya menambahkan app.UseStaticFiles();kode ini di starup.cs metode Konfigurasi, daripada diperbaiki.

Dan Periksa izin Anda di folder ini.

Metin Atalay
sumber
0

Untuk Gambar digunakan

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

pada Gaya gunakan ini

style="background-image:url(@Url.Content("~/assets/bg4.jpg"))
Maximiliano Cesán
sumber
0

Dalam kasus saya ketika tidak ada file javascript, png, atau css saya dimuat saya mencoba sebagian besar jawaban di atas dan sepertinya tidak ada yang melakukan trik.

Saya akhirnya menemukan " Permintaan Filter ", dan sebenarnya harus menambahkan .js, .png, .css sebagai jenis file yang diaktifkan / diterima.

Setelah saya melakukan perubahan ini, semua file disajikan dengan benar.

Pemimpin Merr
sumber
0

Jika Anda melihat 403 kesalahan di konsol browser Anda, periksa MVC Bundle Config Anda. Nama bundel tidak boleh cocok dengan nama folder yang ada di proyek Anda.

misalnya.

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

... akan menyebabkan masalah bagi IIS jika struktur folder $ (ProjectDir) \ Content \ css ada di proyek Anda, karena ia mencoba mencari di dalam folder yang ada untuk konten bundel yang tidak ada di sana.

Alih-alih hanya menggunakan sesuatu seperti:

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

Masalah ini terjadi ketika IIS tidak membuat konten statis seperti file JS, CSS, gambar Anda.

Untuk mengatasi masalah ini, Anda harus mengikuti langkah-langkah di bawah ini:

GO to Control Panel> Mengaktifkan atau menonaktifkan fitur Windows> Layanan Informasi Internet> World Wide Web Services> Fitur HTTP Umum> Konten Statis.

Pastikan konten statis dihidupkan.

Bingo. Dan kamu sudah selesai. Isi ulang laman dengan susah payah dan Anda akan dapat melihat semua konten statis.

Aman Agarwal
sumber
0

Saya punya masalah yang sama persis, mencoba semua saran tetapi tidak mendapat apa-apa. Mengganggu saya berjam-jam. Ternyata ISP saya memblokir port 80 karena beberapa alasan.

Saran: periksa lalu lintas Anda. Pastikan port 80 berfungsi baik secara lokal (mis. Firewall) dan secara eksternal.

wahaha
sumber