CSS, Görseller, JS IIS'de yüklenmiyor


126

Tüm uygulamalarım iyi çalışıyordu ancak birdenbire IIS altındaki tüm siteler css, resimler, komut dosyaları yüklemiyor. Giriş sayfasına yönlendirir.

Giriş yaparsam iyi çalışıyor. ör. mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

Yerel makinemde oturum açmadan iyi çalışıyor.


yanlış etiketleme, gerçek soru değil ...
Renatas M.

3
Etiketlenmiş sürüme Geri Alma çünkü düşünüyorum bu davranışa neden ve etiketleri alakalı olduğunu biliyoruz. Değilse, kapatmak için oy kullanacağım.
Tim Medora

Bu web yapılandırmasında sorun değil, tüm cevapları denedim. IIS ile ilgili bir sorun olduğunu düşünüyorum çünkü tek bir uygulamayı dağıtmadan önce tüm siteler iyi çalışıyordu, hepsi iis üzerinde etkiliyor
Imran Rashid

@ImranRashid - bu site, ayarları IIS'deki başka bir siteden devralıyor mu?
Tim Medora

@Tim Medora - Hayır efendim, başka siteden miras almıyor.
Imran Rashid

Yanıtlar:


185

Sorun, IIS'nin Statik İçeriği sunmaması olabilir, bunu buradan kurabilirsiniz: görüntü açıklamasını buraya girin

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

Windows 10:

yukarıdaki iletişim kutusunun Windows 10 sürümü


2
Benzer bir sorun yaşadım, bunun bir kurulum sorunu olduğunu fark ettim, ancak statik içeriği etkinleştirmek sorunu çözmüş gibi görünüyor!
ife labolz

5
Bu benim pastırmamı kurtardı, bunun varsayılan olarak etkin olduğunu düşünürdünüz, ancak Windows 10'da değil.
Justin

3
Lame, bu varsayılan olarak kontrol edilmez.
RayLoveless

3
@RayLoveless Bence MVC, statik içeriğin MVC'de çalışması için etkinleştirilen bu IIS özelliğine sıkı bir bağımlılık alıyor. Bence bu kadar bağlı olmamalılar. Belki .NET Core bunu düzeltir. : p
Matt Kocaj

2
Aa ve son seferden 2 yıl sonra yine aynı cevapla kurtarıldık.
Eric Wu

176

Aynı sorunu yaşadım, kimliği doğrulanmamış bir sayfa, web uygulamamı Windows Server 2012 R2 üzerinde IIS 8.5'te ASP.Net 4.5'e yüklediğimde CSS, JS ve Resimleri yüklemiyordu.

  1. Statik içerik rolünü yükledim
  2. Web Uygulamam IIS'nin wwwroot klasöründeydi ve tüm Windows Klasörü izinleri sağlamdı (varsayılan olanlar, IIS_IUSRS dahil)
  3. CSS, JS ve resimleri içeren tüm klasörler için yetki ekledim.
  4. Bir Windows paylaşımında web uygulaması klasörüm vardı, bu yüzden @ imran-rashid tarafından önerildiği gibi paylaşımı kaldırdım

Yine de, sorunu hiçbir şey çözmedi. Sonunda anonim kullanıcının kimliğini Uygulama Havuzu Kimliğine ayarlamayı denedim ve çalışmaya başladı.

Kimlik Doğrulama Özelliğine tıklayın Anonim Kimlik Doğrulamayı Düzenleyin Uygulama Havuzu Kimliğine Geçiş

Birkaç saat kafamı çarptım ve bu cevabın geliştirici arkadaşlarımın acısını kurtaracağını umuyorum.

Bunun neden işe yaradığını gerçekten bilmek isterim. Düşüncesi olan var mı?


1
Bu benim için de çalıştı. Bunun "Belirli kullanıcının" uygulama havuzunun kimliğinin olduğu klasör konumu için izinlere sahip olmamasından kaynaklandığına inanıyorum.
dcinadr

4
Birkaç saat ? Beni 4'ten fazla etkiliyor. Tanrıya şükür bana yardımcı oldu :)
Tito

3
Wwwroot klasörünü paylaştıktan sonra bu sorunu aniden yaşadım. Çözümünüz onu düzeltti. Eklemek için zaman ayırdığınız ve ayrıntılar için teşekkür ederiz.
Kaynak

1
BACAK SONU! Çok teşekkürler
David

1
Bu, gönderinizi aramak zorunda olduğum 2. seferdi, çünkü şimdi iki kez kurtardı. Mümkünse sana 100 kat daha fazla oy veririm. Umbraco kullanıyordu - yerel IIS'mi Documents \ Visual Studio 2013 \ Projects kullanarak ayarla - eklendi CPUName\IIS_IUSRSve yine de yüklenmiyordu. Tekrar teşekkürler!
Rob Scott

18

Benzer bir hata aldım, konsolum şöyle görünüyordu:

hata

Benim sorunum, şirket bir üst alan adı kullandığı ve alt alan adı olmadığı için sitemi bir alt klasörde çalıştırmamdı. Bunun gibi:

host.com/app1

host.com/app2

Kodum, localhost'ta iyi çalışan ancak app1 veya app2'de olmayan komut dosyalarını dahil etmek için şöyle görünüyordu:

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

Src'ye bir tilde işareti eklendi ~ve sonra her şey çalıştı:

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

~Vs açıklaması /:

  • / - Site kökü
  • ~/ - Uygulamanın kök dizini

/ sitenin kökünü (http://host.com/ ) ,

~/uygulamanın kökünü ( http://host.com/app1/) döndürür .


1
yukarı oy. Bu sorunu yaşıyordum, uygulama sahnede değil, üretimde yükleniyordu. @ Url.Content () 'ı da ~ / ile kullanıyorum. Üretimde test edilmedi, ancak işe
yarayacağını

17

StaticContent bölümünü web.config dosyanızdan kaldırmayı deneyin .

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

StaticContent'i kaldırmak işe yarıyor, ancak şimdi tüm yazı tiplerim 404?
Rajesh Sivasankaran

Bu konuda uzman değilim, ancak yazı tipleriniz için doğru MIME türü bildirimlerini web sitesi özelliklerinin HTTP Başlıkları sekmesindeki IIS Yöneticisi aracılığıyla eklemeniz gerekebilir.
intrepidis

1
Bu benim için sorunu çözdü, çünkü orada geliştirme aşamasında bazı .woff dosyası girişlerim var, ancak üretimde aynı kurulumun ayarlanması gerekiyor
guideX

Teşekkürler intrepidis, benim durumumda öneriniz benim için çalıştı. Şerefe!
user752746

15

Bu, sorunuzu yanıtlamayabilir, ancak yeni bir IIS kurulumuyla aynı belirtilerle başımı çarpıyorum. CSS, JS ve resimler görünmüyordu. IIS 7.5'te "Statik İçerik" rolünün yüklenmemiş olmasından kaynaklanıyordu.


Farklı bir sorununuz olabilir ve sorunum, dizini inetpub'dan taşıdığımda sorunumu geri aldığımda izinleri kaldırmasıydı.
İmran Rashid

7

Muhtemelen web.config dosyanızda Windows kimlik doğrulamasını etkinleştirmişsinizdir. Yerel bir makinede, Windows kimlik bilgileriniz otomatik olarak aktarılır ve çalışır. Canlı bir sitede, anonim bir kullanıcı olarak kabul edilirsiniz (IE ayarı bunu kontrol edebilir, ancak ne yaptığınızı gerçekten bilmiyorsanız bunu değiştirmeyin).

Bu, aşağıdakilere neden olur:

  • Açıkça oturum açmanız gerekmektedir.
  • Komut dosyaları ve CSS gibi kaynaklar, kimlik doğrulaması yapılmadığından oturum açma sayfasında sunulmaz.

Bu bozuk değil, yalnızca amaçlandığı gibi çalışıyor, ancak bunu "düzeltmek" için:

  • Oturum açmak istemiyorsanız web.config dosyasındaki kimlik doğrulama türünü değiştirin.
  • Ve / veya CSS, resimler, komut dosyaları vb. İçeren dizinlere yetkilendirme kurallarını belirten bir web.config ekleyin.

kimlik doğrulama modu Formlar penceresi değil mi? uygulama web yapılandırma dosyası makine yapılandırmasını geçersiz kılma? IIS'de buna neden olan herhangi bir ayar var mı?
Imran Rashid

Form kimlik doğrulaması ayrıca bir oturum açma istemini tetikleyecek ve komut dosyaları ve resimler gibi kaynakların sunulmasını engelleyecektir. Web.config dosyasında yapmanız gereken belirli değişiklikler için diğer yanıtlara bakın. Ayarların IIS'de kaydedilmesi web yapılandırmasını değiştirecektir.
Tim Medora

Ben kendim çözerim. Ağımda wwwroot klasörünü paylaştığımda sorun ortaya çıkıyor. Dizinin iznini değiştirir. Paylaşımı kaldırdığımda ve izni varsayılan olarak ayarladığımda. Çözüldü :) Teşekkürler Tim
Imran Rashid

6

Bunu web.config dosyanıza ekleyin

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

Yol görecelidir, bazen kökün eklenmesi bunu çözer. Yolunu ayarlamayı deneyin"~/Images"
StuperUser

6

Bunu web.config dosyanızın yapılandırma bölümünde kullanın:

<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

Windows izin sorunuydu, yanlış izinleri devraldığı klasörü taşıdım. Wwwroot klasörüne geçtiğimde ve iis kullanıcısına izin eklediğimde iyi çalışmaya başlıyor.


1
Ben sadece gelen proje dosyaları taşınmış, aynı problem vardı desktopiçin wwwroot ek Başvuru havuzuna ilgilidir şebeke servisine tam kontrol eklemiş, klasör.
mihkov

3

Bunu benim için web.configçözülen soruna eklemek

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

2

Benim acı saatim, web.config dosyasında MIME türlerinin tanımlanmasıydı. Geliştirme sunucusu için buna ihtiyacım vardı, ancak yerel IIS bundan nefret ediyordu çünkü MIME türlerini kopyaladı ... Bunları web.config'ten kaldırdıktan sonra js, css ve yüklenmeyen resimlerle ilgili sorun ortadan kalktı.


Yinelenen MIME türleri olabileceğine inanmak zor! Farklı kullanıcı izinleri, vb. Denerken en az bir saat boyunca araştırma yaptım, ancak web.config dosyamda MIME'lerin çoğaltılmasıyla sonuçlandı: - |
Aaron Hudon

2

Bu bir kimlik doğrulama sorunudur. Benim durumumda, aşağıdaki adımlarla çözüldü: 1- Sol bölmede IIS yöneticisine gidin, sunucu kökünü genişletin ve Web uygulamanızı Siteler düğümünden seçin. 2- Ana ekranda IIS bölümüne gidin ve Kimlik Doğrulama'yı seçin. 3- Anonim Kimlik Doğrulamayı Etkinleştirin. 4- Ardından, Düzenle'yi seçin ve Anonim Kimlik Doğrulama Kimlik Bilgilerini Düzenle'yi Uygulama havuzu kimliği olarak ayarlayın.

Anonim Kimlik Doğrulama Kimlik Bilgileri


Aynı adımları izledim ve sorun çözüldü. Teşekkürler Alireza.
Arvind Gautam

1

Benim durumumda,

IIS ile her şeyi yükleyebilir localhost, ancak şablon dosyalarımı yükleyemezapp.tag şuradan192.168.0.123

çünkü .taguzantı listede yoktu.

IIS MIME türleri


1

Bunu düzeltmek için:

İnternet Bilgi Servisine (IIS) gidin

Resmi yüklemeye çalıştığınız web sitenize tıklayın

IIS bölümünde, Authentication menüsünü açın ve Windows Authentication'ı da etkinleştirin.


1

Geçmişte, üretim sitesinin bir kopyasıyla çalışırken localhost test ortamında site geliştirirken yararlı bulduğum bir öneri. Kanonik etiketleri yorumladığınızdan emin olun:

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

1

Yukarıdaki tüm çözümleri denediyseniz ve hala sorun yaşıyorsanız, ASP.NET'in ResolveClientUrl () yöntemini kullanmayı düşünün.

Örnek için bir komut dosyası:

Kullanmak yerine

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

Yöntemi kullanın

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

Bu, yardım ettiğim bir arkadaşım için işe yarayan çözümümdü!


1

Ben de aynı sorunu yaşadım. Benim için bunun nedeni, IIS'de sunucu düzeyinde Cache-Control başlığının önbelleksiz, depolamasız olarak ayarlanmasıydı. Bu yüzden uygulamam için aşağıdakileri web.config dosyama eklemem gerekiyordu:

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

0

Bunun olası bir nedeni, uygulamanızın 443 numaralı bağlantı noktasında (standart SSL bağlantı noktası) çalışmayı beklemesi ve 443 numaralı bağlantı noktasının zaten kullanımda olmasıdır. Skype bilgisayarlarında çalışırken uygulamamızı çalıştırmaya çalışan geliştiricilerle birkaç kez karşılaştım.

İnanılmaz bir şekilde, Skype 443 numaralı bağlantı noktasında çalışıyor. Bence bu korkunç bir tasarım hatası. Uygulamanızın 443 yerine 444'te çalışmaya çalıştığını görürseniz, Skype'ı kapatın ve sorun ortadan kalkacaktır.


0

ekledim app.UseStaticFiles(); sabitlendiği daha yapılandırma yöntemi starup.cs bu kodu.

Ve bu klasördeki izninizi kontrol edin.


0

Görseller için kullanın

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

Bir Tarzda bunu kullan

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

0

Benim durumumda, javascript, png veya css dosyalarımın hiçbiri yüklenmediğinde, yukarıdaki yanıtların çoğunu denedim ve hiçbiri hile yapmıyor gibi göründü.

Sonunda " İstek Filtreleri " ni buldum ve aslında .js, .png, .css'yi etkin / kabul edilmiş bir dosya türü olarak eklemek zorunda kaldım.

Bu değişikliği yaptıktan sonra, tüm dosyalar düzgün bir şekilde sunuluyordu.


0

Tarayıcı konsolunuzda 403 hataları görüyorsanız, MVC Bundle Config'inizi kontrol edin. Paket adları, projenizdeki mevcut klasör adlarından hiçbiriyle eşleşmemelidir.

Örneğin.

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

... $ (ProjectDir) \ Content \ css klasör yapısı IIS için sorunlara neden olur var olmayan paket içeriği için mevcut klasör içinde bakmaya çalıştığından, projenizde .

Bunun yerine şuna benzer bir şey kullanın:

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

0

Bu sorun, IIS JS, CSS, Görüntü dosyalarınız gibi statik içerikleri oluşturmadığında ortaya çıkar.

Bu sorunu çözmek için aşağıdaki adımları izlemeniz gerekir:

Denetim Masası'na gidin> Windows özelliklerini açın veya kapatın> Internet Information Services> World Wide Web Hizmetleri> Ortak HTTP Özellikleri> Statik İçerik.

Statik içeriğin açık olduğundan emin olun.

Bingo. Ve bitirdiniz. Sayfayı yeniden yükleyin ve tüm statik içerikleri görebileceksiniz.


0

Tamamen aynı sorunu yaşadım, tüm önerileri denedim ama hiçbir şey alamadım. Beni saatlerce rahatsız etti. İSS'm bazı nedenlerden dolayı 80 numaralı bağlantı noktasını engelledi.

Tavsiye: trafiğinizi kontrol edin. Bağlantı noktası 80'in hem yerel (yani güvenlik duvarı) hem de harici olarak çalıştığından emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.