วิธีแก้ปัญหาโดยละเอียดสำหรับข้อความแสดงข้อผิดพลาด ASP.NET 401.3 การเข้าถึงถูกปฏิเสธ

ฉันเพิ่งเขียนโค้ดตัวอย่างสำหรับ ASP.NET Web Application โดยใช้บริการเว็บ สภาพแวดล้อมคือ Visual Studio 2015 ระบบปฏิบัติการของฉันคือ Windows 8

เมื่อทำการแก้ไขข้อบกพร่อง หน้าเว็บจะไม่แสดงแอปจาก URL แต่จะรายงานข้อผิดพลาด:

"

ผิดพลาดเซิร์ฟเวอร์ใน '/' แอพลิเคชัน.

การเข้าถึงถูกปฏิเสธ. คำอธิบาย: มีข้อผิดพลาดเกิดขึ้นขณะเข้าถึงทรัพยากรที่จำเป็นต่อการตอบสนองคำขอนี้ คุณอาจไม่มีสิทธิ์ในการดูทรัพยากรที่ร้องขอ

ข้อความแสดงข้อผิดพลาด 401.3: คุณไม่ได้รับอนุญาตให้ดูไดเร็กทอรีหรือเพจนี้โดยใช้ข้อมูลประจำตัวที่คุณให้ไว้ (การเข้าถึงถูกปฏิเสธเนื่องจากรายการควบคุมการเข้าถึง) ขอให้ผู้ดูแลระบบของเว็บเซิร์ฟเวอร์เพื่อให้คุณสามารถเข้าถึง 'K:...\WebServicesDemo\WebServicesDemo\CalculatorWebService.asmx'

ข้อมูลเวอร์ชัน: Microsoft .NET Framework เวอร์ชัน:4.0.30319; ASP.NET เวอร์ชัน:4.0.30319.34248

"

ฉันลองทำอะไรแล้ว:

ให้สิทธิ์เข้าถึง "IIS_IUser" แต่ควรเป็น "IUSR" แทน นั่นช่วยแก้ปัญหาได้ สิ่งนี้มาจากโพสต์: การโฮสต์ ASP.NET ใน IIS7 ให้การเข้าถึงคือ ปฏิเสธ?

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

ตัวอย่างเช่น ฉันไม่เข้าใจว่าจะเพิ่ม IIS_IUSRS หรือ IUSR ได้ที่ไหน พวกเขาเป็นยังไงบ้าง? ประการที่สอง ดูเหมือนว่าทั้ง IIS_IURSS และ IUSR จะไม่ได้รับการยอมรับในโฟลเดอร์ความปลอดภัยของฉัน (คลิกขวาที่โฟลเดอร์แอป คุณสมบัติ -> แท็บความปลอดภัย)

สำหรับข้อมูลเพิ่มเติม Web.config ของฉันมีลักษณะดังนี้:

<?xml version="1.0"?> 
<!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> 
<configuration> 
<system.web> 
<compilation debug="true" targetFramework="4.0"/> 
<httpRuntime/>
 </system.web>
 </configuration> 

person Curly    schedule 17.07.2015    source แหล่งที่มา
comment
สามารถแสดงส่วน <security> ของไฟล์ web.config ของคุณได้หรือไม่   -  person vendettamit    schedule 17.07.2015
comment
แก้ไขคำถามเพื่อเพิ่มรายละเอียดเพิ่มเติมที่ไม่มีในความคิดเห็น คนอื่นๆ อาจไม่สามารถเข้าใจทั้งหมดได้ในขณะที่อ่านคำถามของคุณ   -  person vendettamit    schedule 17.07.2015
comment
ไปที่ properties ของโครงการของคุณโดยกด F4 และดูว่าผู้ใช้ Anonymous คือ enabled หรือไม่ ถ้าไม่เช่นนั้นให้เปิดใช้งานแล้วลองอีกครั้ง   -  person vendettamit    schedule 17.07.2015
comment
คุณสมบัติ คลิกขวาที่โฟลเดอร์โครงการ เลือกคุณสมบัติใต้หน้าต่าง หรือไปที่โซลูชัน explorer ที่ VS แล้วคลิกขวาและเลือกคุณสมบัติ   -  person Curly    schedule 17.07.2015
comment
ASMX เป็นเทคโนโลยีรุ่นเก่า และไม่ควรใช้สำหรับการพัฒนาใหม่ ควรใช้ WCF หรือ ASP.NET Web API สำหรับการพัฒนาไคลเอ็นต์และเซิร์ฟเวอร์บริการเว็บใหม่ทั้งหมด คำแนะนำประการหนึ่ง: Microsoft เลิกใช้ ASMX Forum บน MSDN แล้ว   -  person John Saunders    schedule 18.07.2015
comment
@JohnSaunders จับได้ดี   -  person vendettamit    schedule 18.07.2015
comment
แล้วจะมีทางแก้ไขอย่างไร? มันจะไม่มีวันได้ผลเหรอ? ขอบคุณ   -  person Curly    schedule 20.07.2015


คำตอบ (2)


  1. นำทางไปยังรูทของเว็บแอปพลิเคชันของคุณ: เช่น C:\Inetpub\wwwroot[ชื่อโฟลเดอร์เว็บไซต์]
  2. คลิกขวาที่ไฟล์แล้วไปที่ "คุณสมบัติ > ความปลอดภัย"
  3. คลิก "แก้ไข" จากนั้นคลิก "เพิ่ม"
  4. คลิก "ขั้นสูง" ที่ด้านล่างซ้าย
  5. คลิก "ค้นหาทันที" - นี่ควรแสดงรายการบัญชีทั้งหมดที่มีอยู่
  6. เลื่อนจนกว่าคุณจะพบ "IUSR" แล้วเลือก
  7. คลิก "ตกลง"
  8. คลิก "ตกลง" อีกครั้ง
  9. ในบล็อก "สิทธิ์สำหรับ IUSR" คลิกที่ "อนุญาต" ถัดจาก "การควบคุมทั้งหมด"
  10. คลิกนำไปใช้ (รอให้กล่องโต้ตอบปิด)
  11. คลิก "ตกลง"
  12. คลิก "ตกลง" อีกครั้ง

ปัญหาของคุณควรได้รับการแก้ไข

person Chad    schedule 23.10.2017

นอกจากคำตอบของ Chad แล้ว ยังมีการตั้งค่าที่ยุ่งยากที่คุณอาจต้องตรวจสอบเช่นกัน:

1) เปิดเว็บไซต์รูทใน IIS

2) Go to Authentication --> Anonymous Authentication --> Edit

3) ตรวจสอบให้แน่ใจว่าตั้งค่า Anonymous user identity เป็น Application pool identity

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

person Thomas C. G. de Vilhena    schedule 03.07.2019