CSS, รูปภาพ, JS ไม่โหลดใน IIS


126

แอปพลิเคชันทั้งหมดของฉันทำงานได้ดี แต่ทันใดนั้นไซต์ทั้งหมดภายใต้ IIS ไม่โหลด css, รูปภาพ, สคริปต์ มันเปลี่ยนเส้นทางไปยังหน้าเข้าสู่ระบบ

ถ้าฉันเข้าสู่ระบบมันใช้งานได้ดี เช่น mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

ในเครื่องของฉันทำงานได้ดีโดยไม่ต้องเข้าสู่ระบบ


ติดแท็กผิดไม่ใช่คำถามจริง ...
Renatas M.

3
ย้อนกลับไปที่เวอร์ชันที่ติดแท็กเพราะฉันคิดว่าฉันรู้ว่าอะไรเป็นสาเหตุของพฤติกรรมนี้และแท็กมีความเกี่ยวข้อง ถ้าไม่ฉันจะปิดโหวต
Tim Medora

ไม่มีปัญหากับการกำหนดค่าเว็บนี้ฉันได้ลองคำตอบทั้งหมดแล้ว ฉันคิดว่ามันเป็นปัญหากับ IIS เพราะไซต์ทั้งหมดทำงานได้ดีก่อนที่ฉันจะปรับใช้แอพพลิเคชั่นเดียวมันมีผลกับ iis
Imran Rashid

@ImranRashid - ไซต์นี้สืบทอดการตั้งค่าจากไซต์อื่นใน IIS หรือไม่
Tim Medora

@ Tim Medora - ไม่ครับไม่ได้รับมรดกจากเว็บไซต์อื่น
Imran Rashid

คำตอบ:


185

ปัญหาอาจเกิดจาก IIS ไม่ได้ให้บริการ Static Content ซึ่งคุณสามารถตั้งค่าได้ที่นี่: ป้อนคำอธิบายภาพที่นี่

ที่มา: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/

Windows 10:

กล่องโต้ตอบด้านบนรุ่น windows 10


2
ฉันมีปัญหาที่คล้ายกันตระหนักว่ามันเป็นปัญหาในการติดตั้ง แต่การเปิดใช้งานเนื้อหาคงที่ดูเหมือนจะแก้ไขได้แล้ว!
ife labolz

5
สิ่งนี้บันทึกเบคอนของฉันคุณจะคิดว่าสิ่งนี้ถูกเปิดใช้งานโดยค่าเริ่มต้น แต่ใน windows 10 นั้นไม่ใช่
Justin

3
ง่อยนี่ไม่ได้ตรวจสอบตามค่าเริ่มต้น
RayLoveless

3
@RayLoveless ฉันคิดว่าสิ่งที่ง่อยคือ MVC ต้องพึ่งพาคุณสมบัติ IIS นี้อย่างหนักเพื่อให้เนื้อหาคงที่ทำงานใน MVC ฉันคิดว่าพวกเขาไม่ควรคู่กัน บางที. NET Core จะแก้ไขปัญหานี้ได้ : p
Matt Kocaj

2
Aa และเรากลับมาที่นี่อีกครั้งโดยได้รับความช่วยเหลือจากคำตอบเดิม 2 ปีหลังจากครั้งสุดท้าย
Eric Wu

176

ฉันมีปัญหาเดียวกันหน้าไม่ได้รับการรับรองความถูกต้องจะไม่โหลด CSS, JS และรูปภาพเมื่อฉันติดตั้งเว็บแอปพลิเคชันใน ASP.Net 4.5 ใน IIS 8.5 บน Windows Server 2012 R2

  1. ฉันติดตั้งบทบาทเนื้อหาคงที่แล้ว
  2. แอปพลิเคชันเว็บของฉันอยู่ในโฟลเดอร์ wwwroot ของ IIS และสิทธิ์ของ Windows Folder ทั้งหมดยังคงอยู่ (ค่าเริ่มต้นรวมถึง IIS_IUSRS)
  3. ฉันเพิ่มการอนุญาตสำหรับโฟลเดอร์ทั้งหมดที่มี CSS, JS และรูปภาพ
  4. ฉันมีโฟลเดอร์เว็บแอปพลิเคชันในการแชร์ windows ดังนั้นฉันจึงลบการแชร์ตามที่ @ imran-rashid แนะนำ

กระนั้นดูเหมือนจะไม่มีอะไรช่วยแก้ปัญหาได้ แล้วในที่สุดฉันก็ลองตั้งค่าข้อมูลประจำตัวของผู้ใช้ที่ไม่ระบุชื่อเป็น App Pool Identity และมันก็เริ่มทำงาน

คลิกที่คุณสมบัติการพิสูจน์ตัวตน แก้ไขการพิสูจน์ตัวตนแบบไม่ระบุชื่อ เปลี่ยนเป็น App Pool Identity

ฉันกระแทกหัวสองสามชั่วโมงและหวังว่าคำตอบนี้จะช่วยลดความเจ็บปวดให้กับเพื่อนนักพัฒนาของฉัน

ฉันอยากทราบว่าทำไมถึงได้ผล ความคิดใด ๆ ?


1
สิ่งนี้ใช้ได้ผลกับฉันด้วย ฉันเชื่อว่าเป็นเพราะ "ผู้ใช้เฉพาะ" ไม่มีสิทธิ์ในตำแหน่งโฟลเดอร์ซึ่งข้อมูลประจำตัวของกลุ่มแอปพลิเคชันทำ
dcinadr

4
ไม่กี่ชั่วโมง ? ฉันใช้เวลามากกว่า 4 ขอบคุณพระเจ้าที่ช่วยฉัน :)
ตีโต้

3
ฉันพบปัญหานี้กะทันหันหลังจากแชร์โฟลเดอร์ wwwroot โซลูชันของคุณได้รับการแก้ไขแล้ว ขอขอบคุณที่สละเวลาเพิ่มและสำหรับรายละเอียด
แหล่งข้อมูล

1
ตำนาน! ขอบคุณมาก
David

1
นี่เป็นครั้งที่ 2 ที่ฉันต้องค้นหาโพสต์ของคุณ b / c มันช่วยฉันได้สองครั้งแล้ว ฉันจะโหวตให้คุณ 100x ถ้าทำได้ กำลังใช้ Umbraco - ตั้งค่า IIS ในเครื่องของฉันโดยใช้ Documents \ Visual Studio 2013 \ Projects - เพิ่มCPUName\IIS_IUSRSและยังไม่โหลด ขอบคุณอีกครั้ง!
Rob Scott

18

ฉันมีข้อผิดพลาดที่คล้ายกันคอนโซลของฉันมีลักษณะดังนี้:

ความผิดพลาด

ปัญหาของฉันคือฉันเรียกใช้ไซต์ของฉันในโฟลเดอร์ย่อยเนื่องจาก บริษัท ใช้โดเมนบนสุดโดเมนเดียวและไม่มีโดเมนย่อย แบบนี้:

host.com/app1

host.com/app2

รหัสของฉันดูเหมือนสิ่งนี้สำหรับการรวมสคริปต์ที่ทำงานได้ดีบน localhost แต่ไม่ได้อยู่ใน app1 หรือ app2:

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

เพิ่มเครื่องหมาย tilde ~ใน src จากนั้นทุกอย่างทำงาน:

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

คำอธิบายของ~vs /:

  • / - รูทไซต์
  • ~/ - ไดเรกทอรีรากของแอปพลิเคชัน

/จะส่งคืนรูทของไซต์ ( http://host.com/)

~/จะส่งคืนรูทของแอปพลิเคชัน ( http://host.com/app1/)


1
ขึ้นโหวต. ฉันประสบปัญหานี้แอปไม่มีอะไรโหลดบนเวที แต่กำลังโหลดในการผลิต ฉันใช้ @ Url.Content () ด้วย ~ /. ไม่ได้ทดสอบในการผลิต แต่ฉันคิดว่ามันใช้ได้
Kross

17

ลองเอาstaticContentส่วนจากweb.config

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

การลบ staticContent ใช้งานได้ แต่ตอนนี้แบบอักษรทั้งหมดของฉันเป็น 404?
Rajesh Sivasankaran

ฉันไม่ใช่ผู้เชี่ยวชาญเรื่องนี้ แต่บางทีคุณอาจต้องเพิ่มการประกาศประเภท MIME ที่ถูกต้องสำหรับฟอนต์ของคุณผ่านทางตัวจัดการ IIS ในแท็บส่วนหัว HTTP ของคุณสมบัติเว็บไซต์
intrepidis

1
สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้เพราะฉันมีรายการไฟล์. woff อยู่ในการพัฒนา แต่ในการตั้งค่าการผลิตเดียวกันจำเป็นต้องมีการปรับเปลี่ยน
guideX

ขอบคุณ intrepidis ในกรณีของฉันคำแนะนำของคุณใช้ได้ผลสำหรับฉัน ไชโย!
user752746

15

สิ่งนี้อาจไม่ตอบคำถามของคุณ แต่ฉันได้รับการกระแทกศีรษะด้วยอาการเดียวกันกับการติดตั้ง IIS ใหม่ CSS, JS และรูปภาพไม่ปรากฏขึ้น เกิดจากการที่ไม่ได้ติดตั้งบทบาท "เนื้อหาคงที่" ใน IIS 7.5


คุณอาจมีปัญหาอื่นและปัญหาของฉันคือเมื่อฉันย้ายไดเรกทอรีจาก inetpub มันจะลบสิทธิ์เมื่อฉันเปลี่ยนกลับปัญหาของฉันได้รับการแก้ไขแล้ว
Imran Rashid

7

คุณอาจเปิดใช้งานการรับรองความถูกต้องของ Windows ใน web.config ของคุณ ในเครื่องท้องถิ่นข้อมูลประจำตัว Windows ของคุณจะถูกส่งผ่านโดยอัตโนมัติและใช้งานได้ ในไซต์ที่ใช้งานจริงคุณจะถือว่าเป็นผู้ใช้ที่ไม่ระบุตัวตน (การตั้งค่า IE สามารถควบคุมสิ่งนี้ได้ แต่อย่าแก้ไขสิ่งนี้เว้นแต่คุณจะรู้จริงๆว่าคุณกำลังทำอะไรอยู่)

สาเหตุดังต่อไปนี้:

  • คุณต้องเข้าสู่ระบบอย่างชัดเจน
  • ทรัพยากรเช่นสคริปต์และ CSS จะไม่แสดงในหน้าเข้าสู่ระบบเนื่องจากคุณไม่ได้รับการพิสูจน์ตัวตน

สิ่งนี้ไม่ได้เสียหายเพียง แต่ทำงานได้ตามที่ตั้งใจไว้ แต่เพื่อ "แก้ไข" สิ่งนี้:

  • เปลี่ยนประเภทการพิสูจน์ตัวตนใน web.config หากคุณไม่ต้องการล็อกอินใด ๆ
  • และ / หรือเพิ่ม web.config ในไดเร็กทอรีที่มี CSS, รูปภาพ, สคริปต์ ฯลฯ ซึ่งระบุกฎการอนุญาต

โหมดการพิสูจน์ตัวตนเป็นแบบฟอร์มไม่ใช่หน้าต่าง? แอปพลิเคชันเว็บไฟล์ config แทนที่ config เครื่อง? มีการตั้งค่าใด ๆ ใน IIS ที่ทำให้เกิดปัญหานี้หรือไม่
Imran Rashid

นอกจากนี้การตรวจสอบความถูกต้องของฟอร์มจะเรียกใช้พรอมต์การเข้าสู่ระบบและป้องกันไม่ให้ทรัพยากรเช่นสคริปต์และรูปภาพถูกให้บริการ ดูคำตอบอื่น ๆ สำหรับการเปลี่ยนแปลงเฉพาะที่คุณต้องทำกับ web.config การบันทึกการตั้งค่าใน IIS จะแก้ไขการกำหนดค่าเว็บ
Tim Medora

ฉันแก้ไขด้วยตัวเอง ปัญหาเกิดขึ้นเมื่อฉันแชร์โฟลเดอร์ wwwroot บนเครือข่ายของฉัน มันเปลี่ยนสิทธิ์ของไดเรกทอรี เมื่อฉันเลิกแชร์และตั้งค่าสิทธิ์เป็นค่าเริ่มต้น ได้รับการแก้ไข :) ขอบคุณ Tim
Imran Rashid

6

เพิ่มสิ่งนี้ใน web.config ของคุณ

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

เส้นทางเป็นแบบสัมพัทธ์บางครั้งการเพิ่มรูทจะช่วยแก้ปัญหานี้ได้ ลองตั้งค่าเส้นทางเป็น"~/Images"
StuperUser

6

ใช้สิ่งนี้ในส่วนการกำหนดค่าของไฟล์ 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

มันเป็นปัญหาการอนุญาตของ windows ฉันย้ายโฟลเดอร์ที่สืบทอดสิทธิ์ผิด เมื่อฉันย้ายไปที่โฟลเดอร์ wwwroot และเพิ่มสิทธิ์ให้กับผู้ใช้ iis มันจะเริ่มทำงานได้ดี


1
ฉันมีปัญหาเดียวกันเพิ่งย้ายไฟล์โครงการจากdesktopไปยังwwwroot โฟลเดอร์นอกจากนี้ฉันยังได้เพิ่มการควบคุมทั้งหมดไปยังบริการเครือข่ายซึ่งเกี่ยวข้องกับพูลแอปพลิเคชัน
mihkov

3

สำหรับฉันเพิ่มสิ่งนี้ในการweb.configแก้ไขปัญหา

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

2

ชั่วโมงแห่งความเจ็บปวดของฉันเกิดจากการกำหนดประเภท MIME ใน web.config ฉันต้องการสิ่งนี้สำหรับเซิร์ฟเวอร์การพัฒนา แต่ IIS ในพื้นที่ไม่ชอบเพราะมันซ้ำประเภท MIME ... เมื่อฉันลบสิ่งเหล่านี้ออกจากเว็บการกำหนดค่าปัญหาด้วย js, css และรูปภาพไม่โหลดหายไป


ยากที่จะเชื่อว่ามันสามารถทำซ้ำประเภท MIME ได้! ฉันพยายามอย่างน้อยหนึ่งชั่วโมงเพื่อลองใช้สิทธิ์ผู้ใช้ที่แตกต่างกัน ฯลฯ ฯลฯ แต่สุดท้ายก็มีการทำ MIME ซ้ำใน web.config ของฉัน: - |
Aaron Hudon

2

นี่เป็นปัญหาในการตรวจสอบสิทธิ์ ในกรณีของฉันแก้ไขได้ตามขั้นตอนด้านล่าง: 1- ไปที่ตัวจัดการ IIS ในบานหน้าต่างด้านซ้ายขยายรูทเซิร์ฟเวอร์และเลือกเว็บแอปพลิเคชันของคุณจากไซต์โหนด 2- ในหน้าจอหลักไปที่ส่วน IIS แล้วเลือกการรับรองความถูกต้อง 3- เปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุชื่อ 4- จากนั้นเลือกแก้ไขและตั้งค่า Edit Anonymous Authentication Credentials เป็น Application pool identity

ข้อมูลรับรองการพิสูจน์ตัวตนแบบไม่ระบุชื่อ


ฉันทำตามขั้นตอนเดียวกันและปัญหาได้รับการแก้ไขแล้ว ขอบคุณ Alireza
Arvind Gautam

1

ในกรณีของฉัน

IIS สามารถโหลดทุกอย่างด้วยlocalhostแต่ไม่สามารถโหลดไฟล์เทมเพลตของฉันapp.tagจากไฟล์192.168.0.123

เนื่องจาก.tagส่วนขยายไม่อยู่ในรายการ

ประเภท IIS MIME


1

วิธีแก้ไข:

ไปที่ Internet Information Service (IIS)

คลิกที่เว็บไซต์ของคุณที่คุณกำลังพยายามโหลดภาพ

ในส่วน IIS ให้เปิดเมนูการตรวจสอบความถูกต้องและเปิดใช้งานการรับรองความถูกต้องของ Windows ด้วย


1

คำแนะนำหนึ่งที่ฉันพบว่ามีประโยชน์ในอดีตเมื่อพัฒนาไซต์ในสภาพแวดล้อมการทดสอบ localhost เมื่อทำงานกับสำเนาของไซต์ที่ใช้งานจริง ตรวจสอบให้แน่ใจว่าคุณได้แสดงความคิดเห็นในแท็ก Canonical:

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

1

หากคุณลองวิธีแก้ไขปัญหาข้างต้นทั้งหมดแล้ว แต่ยังคงมีปัญหาให้ลองใช้วิธีการ ResolveClientUrl () ของ ASP.NET

สคริปต์สำหรับตัวอย่าง:

แทนที่จะใช้

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

ใช้วิธีการ

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

นี่เป็นวิธีแก้ปัญหาของฉันที่ได้ผลสำหรับเพื่อนที่ฉันช่วย!


1

ฉันมีปัญหาเดียวกันนี้ สำหรับฉันมันเป็นเพราะส่วนหัว Cache-Control ถูกตั้งค่าที่ระดับเซิร์ฟเวอร์ใน IIS เป็น no-cache, no-store ดังนั้นสำหรับแอปพลิเคชันของฉันฉันต้องเพิ่มด้านล่างใน web.config ของฉัน:

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

0

สาเหตุหนึ่งที่เป็นไปได้คือแอปพลิเคชันของคุณคาดว่าจะทำงานบนพอร์ต 443 (พอร์ต SSL มาตรฐาน) และพอร์ต 443 ถูกใช้งานอยู่แล้ว ฉันพบปัญหานี้หลายครั้งกับนักพัฒนาที่พยายามเรียกใช้แอปพลิเคชันของเราในขณะที่ Skype กำลังทำงานบนคอมพิวเตอร์ของตน

อย่างไม่น่าเชื่อ Skype ทำงานบนพอร์ต 443 นี่เป็นข้อบกพร่องในการออกแบบที่น่ากลัวในความคิดของฉัน หากคุณเห็นแอปพลิเคชันของคุณพยายามทำงานบน 444 แทนที่จะเป็น 443 ให้ปิด Skype และปัญหาจะหมดไป


0

ฉันเพิ่ม app.UseStaticFiles();รหัสนี้ใน starup.cs ของวิธีการกำหนดค่ากว่าจะได้รับการแก้ไข

และตรวจสอบสิทธิ์ของคุณในโฟลเดอร์นี้



0

ในกรณีของฉันเมื่อไม่มีการโหลดไฟล์ javascript, png หรือ css ของฉันฉันได้ลองใช้คำตอบส่วนใหญ่ข้างต้นและดูเหมือนจะไม่มีการหลอกลวง

ในที่สุดฉันก็พบ " ตัวกรองคำขอ " และจริงๆแล้วต้องเพิ่ม. js, .png, .css เป็นประเภทไฟล์ที่เปิดใช้งาน / ยอมรับ

เมื่อฉันทำการเปลี่ยนแปลงนี้ไฟล์ทั้งหมดจะได้รับการบริการอย่างถูกต้อง


0

หากคุณพบข้อผิดพลาด 403 ในคอนโซลเบราว์เซอร์ของคุณให้ตรวจสอบ MVC Bundle Config ชื่อบันเดิลไม่ควรตรงกับชื่อโฟลเดอร์ที่มีอยู่ในโปรเจ็กต์ของคุณ

เช่น.

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

... จะทำให้เกิดปัญหากับ IIS หากโครงสร้างโฟลเดอร์$ (ProjectDir) \ Content \ cssมีอยู่ในโปรเจ็กต์ของคุณเนื่องจากพยายามดูภายในโฟลเดอร์ที่มีอยู่เพื่อหาเนื้อหาบันเดิลที่ไม่มีอยู่

แทนที่จะใช้สิ่งที่ต้องการ:

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

0

ปัญหานี้เกิดขึ้นเมื่อ IIS ไม่แสดงเนื้อหาคงที่เช่นไฟล์ JS, CSS, รูปภาพของคุณ

ในการแก้ไขปัญหานี้คุณต้องทำตามขั้นตอนด้านล่าง:

ไปที่แผงควบคุม> เปิดหรือปิดคุณสมบัติของ Windows> บริการข้อมูลทางอินเทอร์เน็ต> บริการเวิลด์ไวด์เว็บ> คุณสมบัติ HTTP ทั่วไป> เนื้อหาคงที่

ตรวจสอบให้แน่ใจว่าเนื้อหาคงที่เปิดอยู่

การเล่นชนิดหนึ่ง และคุณทำเสร็จแล้ว โหลดหน้าใหม่อย่างหนักและคุณจะสามารถดูเนื้อหาคงที่ทั้งหมดได้


0

ฉันมีปัญหาเดียวกันแน่นอนลองทำตามคำแนะนำทั้งหมด แต่ไม่ได้อะไรเลย รบกวนฉันหลายชั่วโมง ปรากฎว่า ISP ของฉันบล็อกพอร์ต 80 ด้วยเหตุผลบางประการ

คำแนะนำ: ตรวจสอบการจราจรของคุณ ตรวจสอบให้แน่ใจว่าพอร์ต 80 ทำงานได้ทั้งภายในเครื่อง (เช่นไฟร์วอลล์) และภายนอก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.