“ 401 Unauthorized” บนไดเร็กทอรี


87

ฉันถือว่านี่เป็นข้อผิดพลาดของ IIS เนื่องจากจะไม่เกิดขึ้นหากฉันเรียกใช้โปรเจ็กต์บนเครื่องภายในของฉัน

ฉันมีสไตล์ชีตอยู่ที่ ~/Content/css

ไฟล์ใด ๆ ในไดเร็กทอรีนั้นจะไม่โหลดบนเพจและเมื่อฉันไปที่ไฟล์เหล่านั้นโดยตรงฉันได้รับข้อผิดพลาดของเซิร์ฟเวอร์:

401 - ไม่ได้รับอนุญาต: การเข้าถึงถูกปฏิเสธเนื่องจากข้อมูลประจำตัวไม่ถูกต้อง

คุณไม่มีสิทธิ์ดูไดเร็กทอรีหรือเพจนี้โดยใช้ข้อมูลรับรองที่คุณให้มา

สิ่งนี้เกิดขึ้นเฉพาะกับไดเรกทอรีนั้นฉันไม่มีปัญหาในการเข้าถึงไฟล์อื่น ๆ มีบางสิ่งที่ฉันต้องทำใน IIS7 เพื่อหยุดสิ่งนี้หรือไม่

คำตอบ:


47

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

หากไม่เป็นเช่นนั้นคุณได้รับแจ้งให้ป้อนชื่อผู้ใช้และรหัสผ่านจากเบราว์เซอร์หรือไม่ ถ้าเป็นเช่นนั้นก็อาจเป็นไปได้ว่า IIS มีการกำหนดให้ใช้การตรวจสอบแบบบูรณาการเท่านั้นตามที่อธิบายไว้ที่นี่


4
หากคุณกำลังใช้แอปพลิเคชันพูลเพื่อจัดการการเข้าถึงระบบฐานข้อมูล / ไฟล์อย่าทำเช่นนี้ อ่านต่อเพื่อดูคำตอบของ imanabidi ด้านล่าง
Ryan Shillington

ขอบคุณในกรณีของฉันฉันเพิ่งเพิ่มทุกคนด้วยการควบคุมเต็มรูปแบบ
MorenajeRD

8
support.microsoft.com/kb/313075 - ไม่มีหน้านี้อีกต่อไป @ m.edmondson
Divya

296
  1. เปิด IIS และเลือกไซต์ที่เป็นสาเหตุของ 401
  2. เลือกคุณสมบัติการพิสูจน์ตัวตนใน IIS Header
  3. เลือกAnonymous Authentication
  4. คลิกขวาที่มันเลือกEditและเลือกApplication pool identity
  5. รีสตาร์ทไซต์และควรใช้งานได้

13
มันใช้งานได้ แต่ทำไม? ช่วยอธิบายอีกหน่อยได้ไหม
nthapa

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

6
วิธีนี้ใช้งานได้ แต่สิ่งที่ทำให้สับสนคือมันใช้งานได้ดีประมาณ 2 ปีแล้ววันนี้โดยไม่มีสาเหตุที่ทราบว่ามันหยุดทำงาน ... โซลูชันของคุณได้แก้ไขแล้ว
Serj Sagan

ใช้เวลาหลายชั่วโมงกับปัญหานี้และไม่มีโชคจนกว่าฉันจะพบสิ่งนี้! ฉันมีเว็บแอป MVC 5 ที่เคยเผยแพร่ในโหมดเผยแพร่แล้วโหลดไซต์บน Chrome เนื้อหาจะโหลด แต่รูปแบบจะไม่โหลด ลิงก์อยู่ที่นั่นและเส้นทางที่ถูกต้องอย่างไรก็ตามมันว่างเปล่าทั้งหมด! การแก้ไขนี้ช่วยแก้ปัญหาของฉันได้
GIVE-ME-CHICKEN

ในกรณีของฉันฉันต้องเปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุตัวตนเนื่องจากถูกปิดใช้งานโดยค่าเริ่มต้นเมื่อสร้างแอปพลิเคชัน
Paul

16
  • เปิดIIS
  • เลือกไซต์ที่คุณกำลังประสบปัญหา

  • เลือกด้านล่าง

ป้อนคำอธิบายภาพที่นี่

- คลิกขวาที่ Anonymous Authentication แล้วคลิกแก้ไขและปฏิบัติตามด้านล่าง

ป้อนคำอธิบายภาพที่นี่


6

คุณไม่มีสิทธิ์ในการดูไดเร็กทอรีหรือเพจนี้โดยใช้ข้อมูลประจำตัวที่คุณให้มา

เหตุการณ์นี้เกิดขึ้นแม้ว่าผู้ใช้จะได้รับการตรวจสอบสิทธิ์ผ่าน Active Directory แล้วก็ตาม

อาจมีสาเหตุหลายประการที่ทำให้เกิดข้อผิดพลาด Access Denied แต่ถ้าคุณคิดว่าคุณได้กำหนดค่าทุกอย่างอย่างถูกต้องจากเว็บแอปพลิเคชันของคุณแล้วอาจมีรายละเอียดเล็กน้อยที่ลืมไป ตรวจสอบให้แน่ใจว่าคุณได้ให้สิทธิ์ที่เหมาะสมแก่ผู้ใช้ที่พิสูจน์ตัวตนในการเข้าถึงไดเรกทอรีเว็บแอปพลิเคชันของคุณ

นี่คือขั้นตอนที่ฉันใช้เพื่อแก้ปัญหานี้

  1. คลิกขวาที่ไดเร็กทอรีที่จัดเก็บเว็บแอปพลิเคชันแล้วเลือก Properties และคลิกที่แท็บ Security

  2. คลิกที่คลิกที่แก้ไข ... จากนั้นเพิ่ม ... พิมพ์ Authenticated Users ในปุ่ม Enter the object names to select. แล้วเพิ่มปุ่ม พิมพ์ Authenticated Users ใน Enter the object names to select

  3. คลิกตกลงและคุณจะเห็น Authenticated Users เป็นหนึ่งในชื่อผู้ใช้ ให้สิทธิ์ที่เหมาะสมในช่องสิทธิ์สำหรับผู้ใช้ที่รับรองความถูกต้องที่ส่วนล่างสุดหากยังไม่ได้เลือกไว้

  4. คลิกตกลงสองครั้งเพื่อปิดกล่องโต้ตอบ ควรมีผลทันที แต่ถ้าคุณต้องการความแน่ใจคุณสามารถรีสตาร์ท IIS สำหรับเว็บแอปพลิเคชันของคุณได้

รีเฟรชเบราว์เซอร์ของคุณและควรแสดงหน้าเว็บทันที

หวังว่านี่จะช่วยได้!


3

คุณต้องตรวจสอบสิทธิ์ของโฟลเดอร์บนเซิร์ฟเวอร์ของคุณและตรวจสอบว่าบัญชีที่คุณใช้เรียกใช้แอปพลิเคชันของคุณมีสิทธิ์เข้าถึงโฟลเดอร์นั้น


0

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

ฉันใช้เวลาในการเริ่มต้นเกี่ยวกับเรื่องนี้เล็กน้อยจากนั้นขอความช่วยเหลือจากเพื่อนร่วมงานเพื่อเรียนรู้ว่า IIS มีการตั้งค่า "การรับรองความถูกต้อง" ในระดับโฟลเดอร์เสมือนด้วยหวังว่านี่จะช่วยให้คนอื่นเข้าใจสถานการณ์ของฉันได้


0

ในกรณีของเราเป็นการรับรองความถูกต้องแบบรวม Windows ที่ระบุไว้ในแอป web.config

แต่โมดูล windows-auth ไม่ได้ติดตั้งบนเครื่อง IIS เลย

เพียงแค่เพิ่มเหตุผลอื่นที่เป็นไปได้


-4

วิธีแก้ไขง่ายๆอีกอย่างที่ฉันพบคือการลบไซต์ IIS ภายในเครื่อง (จากภายในตัวจัดการ IIS) จากนั้นสร้างไดเรกทอรีเสมือนใหม่จาก "คุณสมบัติ" ของโครงการเว็บของคุณใน Visual Studio

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