ไม่สามารถอ่านไฟล์การกำหนดค่าได้เนื่องจากการอนุญาตไม่เพียงพอ


354

ฉันเพิ่งพบข้อผิดพลาดในการพยายามโฮสต์ไซต์ asp.net ของฉันกับ IIS ฉันได้พบวิธีแก้ปัญหาที่หลายคนสาบานด้วย

สารละลาย:

  1. เพิ่ม IIS_IUSRS พร้อมสิทธิ์ในการอ่านไฟล์ในโฟลเดอร์
  2. เปลี่ยนวิธีการรับรองความถูกต้อง IIS เป็น BasicAuthentication
  3. รีเฟรชเว็บไซต์ มันจะทำงาน

( http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html )

ฉันจะเพิ่มอะไรในไฟล์ 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>
    <connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
 <system.web>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>
</configuration>

ข้อผิดพลาดของฉันคือ:

ข้อผิดพลาดในการกำหนดค่า: ไม่สามารถอ่านไฟล์การกำหนดค่าได้เนื่องจากการอนุญาตไม่เพียงพอไฟล์การกำหนดค่า
: \? \ C: \ Users ***** \ Documents \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config


9
โปรดดูโมดูลติดตั้งเขียนใหม่ ช่วยตัวเองสักชั่วโมง
regisbsb

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

นอกเหนือจากคำตอบอื่น ๆ โปรดทราบว่าการเข้ารหัสระบบไฟล์ (EFS) ยังสามารถรบกวน IIS
G-Wiz

ฉันทำโฆษณานี้ตอนนี้โฮสต์ในพื้นที่กำลังขอรหัสผ่านใกล้ที่ฉันได้ทำงานนี้ขอบคุณ
Paul Ledger

1
สำหรับฉันไม่มี IIS_IUSR ฉันทำเช่นเดียวกันสำหรับผู้ใช้ที่ได้รับการรับรองความถูกต้องและทำงานได้
Bhanu Chhabra

คำตอบ:


544

มีปัญหากับ web.config เว็บไซต์ของคุณทำงานภายใต้กระบวนการ ใน iis คุณสามารถกำหนดเอกลักษณ์ของกระบวนการนั้น ตัวตนที่เว็บไซต์ของแอพลิเคชันวิ่ง ( บริการเครือข่ายระบบท้องถิ่นฯลฯ ) ควรจะมีสิทธิ์ในการเข้าถึงและการอ่านไฟล์ web.config

ปรับปรุง:

คำตอบที่อัปเดตนี้เหมือนกันกับข้างต้น แต่จะยาวและง่ายขึ้นและได้รับการปรับปรุงเล็กน้อย

ก่อนอื่น : คุณไม่ต้องเปลี่ยนอะไรในไฟล์ปรับแต่ง ก็ ok ปัญหาคือมีสิทธิ์หน้าต่างไฟล์

ปัญหานี้เกิดขึ้นเนื่องจากแอปพลิเคชันของคุณไม่สามารถเข้าถึงและอ่าน web.configไฟล์

ทำให้ไฟล์สามารถเข้าถึงได้ในกลุ่มIIS_IUSRS เพียงคลิกขวาที่ web.configและคลิกPropertiesภายใต้แท็บความปลอดภัยให้เพิ่มIIS_IUSRS IIS_IUSRS

แล้ว IIS_IUSRS นี้คืออะไร

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

เมื่อเว็บไซต์ของคุณจะเริ่มต้นในIIS , แอพลิเคชันของเว็บไซต์ของคุณมีความเกี่ยวข้องกับผู้ใช้ ( บริการเครือข่ายระบบภายในฯลฯ ... ) (และสามารถเปลี่ยนแปลงได้ใน IIS)

ดังนั้นเมื่อคุณพูดIIS_IUSRSก็หมายความว่าผู้ใช้ ( บริการเครือข่ายระบบท้องถิ่นฯลฯ ... ) ที่เว็บไซต์ของคุณใช้งานอยู่

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


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

3
คำตอบที่ดีและนี่คือคำแนะนำเพิ่มเติม - การเรียกใช้ IIS7 บน Win7 ในโดเมนคุณอาจไม่พบ IIS_IUSRS ในกลุ่มท้องถิ่นหากคุณลองค้นหาด้วย 'ตรวจสอบชื่อ ... ' ไม่ต้องกังวล - เพียงพิมพ์ IIS_IUSRS โดยสมบูรณ์แล้วกดตกลงและทุกอย่างจะดีขึ้น
Eight-Bit Guru

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

2
ฉันต้องทำสิ่งนี้เพื่อ IUSR IIS_IUSRS ไม่ทำงานสำหรับฉันด้วยเหตุผลบางอย่าง
ทอดด์

13
ในขณะที่พยายามตั้งค่าเว็บไซต์ ASP.Net ใหม่ตั้งแต่ต้นใน IIS 7 เป็นต้นไปเมื่อคุณแก้ไขข้อผิดพลาดที่กล่าวถึงในหัวข้อนี้คุณอาจพบข้อผิดพลาดการอนุญาต "HTTP Error 401.3 - Unauthorized" เป็นอุปสรรค์ต่อไปของคุณ เพื่อแก้ไขว่าถ้าคุณเปิดใช้งานการพิสูจน์ตัวตนแบบไม่ระบุชื่อจากนั้นเปลี่ยนข้อมูลประจำตัวของผู้ใช้ที่ไม่ระบุชื่อจาก "IUSR" (ตั้งเป็นค่าเริ่มต้นโดย IIS) เป็นข้อมูลประจำตัวของกลุ่มแอพลิเคชัน ในการรับหน้าต่างแก้ไขสำหรับการตั้งค่านี้ให้ใช้การกระทำ "แก้ไข" จากบานหน้าต่างการทำงานในมุมมองคุณลักษณะ IIS สำหรับคุณลักษณะ IIS "รับรองความถูกต้อง"
RBT

72

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

วิธีแก้ไข:ติดตั้งโมดูลเขียนใหม่
หวังว่าจะช่วยให้ใครสักคนไม่กี่ชั่วโมง


ได้. เซิร์ฟเวอร์ก่อนหน้านี้ฉันใช้สิ่งนี้ในการเขียนเส้นทางที่ไม่ใช่ ssl ไปยัง ssl .. มากสำหรับข้อผิดพลาดที่ยอดเยี่ยมจาก IIS error::) +1 เนื่องจากแทนที่จะต้องใช้ SSL ฉันเขียน URL ใหม่ไปที่ HTTPS เนื่องจากมีบางคนที่ลิงก์โดยไม่มี https สิ่งที่เป็นปริศนา
Piotr Kula

ขอบคุณ!!! งงงวยกับการอนุญาตหลายชั่วโมงและมันก็ลงเอยแบบนี้ในที่สุด!
Carl Woodhouse

วิธีการหนึ่งที่เกี่ยวกับการติดตั้งโมดูลการเขียน IIS URL?
B. Clay Shannon

2
นี่คือปัญหาของฉันเช่นกัน - ขอบคุณ! ในการติดตั้งโมดูลการเขียนซ้ำให้ดาวน์โหลดจากหน้านี้: iis.net/downloads/microsoft/url-rewrite ปิด IIS ติดตั้งรีสตาร์ท IIS (เพื่อความปลอดภัย)
Tyler Forsythe

2
@ B.ClayShannon ใช้ Web Platform Installer เพื่อค้นหา IIS Rewrite
enorl76

64

หมายเหตุจากบรรณาธิการ: การทำสิ่งที่คำตอบนี้บอกว่าเป็นอันตราย ! บัญชี LocalSystem คือ ...

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


การเปลี่ยน Identity จากApplicationPoolIdentityเป็นLocalSystemก็ทำงานได้;)

ฉันใช้ win7 64 กับ IIS 7.5

เพิ่มเติมเกี่ยวกับ Application Pool Identity ใน IIS 7.5 และชนะ 7

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


คำตอบที่เป็นประโยชน์สำหรับ IIS 6 เช่นกัน พบข้อมูลเพิ่มเติมเกี่ยวกับวิธีการเปลี่ยน Application Pool Identity ได้ที่เว็บไซต์ Microsoft ที่นี่: microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/…
Manuel Alvarez

22
การเปลี่ยนแปลงนี้มีความเสี่ยงด้านความปลอดภัยเนื่องจากการเข้าถึงที่คุณให้บริการนี้: msdn.microsoft.com/en-us/library/windows/desktop/?hl=th
WhiteKnight

นี่ดูเหมือนจะเป็นปัญหาของฉันที่นี่และการเปลี่ยน App Pool Identity เป็น LocalSystem ทำงานตามที่อธิบายไว้!
Vasily Hall

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

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

47

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

สิ่งที่ฉันทำฉันเพิ่งเปลี่ยนขั้นตอนบางอย่าง:

  1. คลิกขวาที่โฟลเดอร์หลัก (ที่สูญเสียสิทธิ์)
  2. Properties => Security => ใน "กลุ่มหรือชื่อผู้ใช้:",
  3. คลิกแก้ไข ...
  4. หน้าต่าง "สิทธิ์สำหรับโฟลเดอร์ของคุณ" จะเปิดขึ้น
  5. ใน "กลุ่มหรือชื่อผู้ใช้:" กดเพิ่ม ... btn
  6. พิมพ์Authenและกดตรวจสอบชื่อ
  7. คุณจะเห็นชื่อกลุ่มทั้งหมด " ผู้ใช้ที่ได้รับการรับรองความถูกต้อง "
  8. กด ok => ใช้
  9. สิ่งนี้ควรเปิดใช้งานสิทธิ์อีกครั้ง

ที่ทำงานให้ฉัน


2
สิ่งนี้ใช้ได้สำหรับฉัน นี่ควรเป็นคำตอบที่ยอมรับได้ ฉันลองวิธีอื่นพวกเขาไม่ทำงาน
GunWanderer

1
การพยายามแก้ไขปัญหาอื่น ๆ ทั้งหมดจะไม่ทำงานจนกว่าจะถึงเวลานี้
jenna_3108

1
โอเคฉันคิดว่าฉันมีคำอธิบายว่าทำไมงานนี้ บาง devs โฮสต์รหัสของพวกเขาที่C:\ IE C:\DevหรือC:\Codeฯลฯ กลุ่มรักษาความปลอดภัยAuthenticated Usersจะได้รับในC:\ และแพร่กระจายไปยังโฟลเดอร์ย่อย อย่างไรก็ตามที่C:\Usersโฟลเดอร์การเผยแพร่นี้หยุด ดังนั้น devs เหมือนตัวฉันที่โฮสต์รหัสภายในโฟลเดอร์บ้านต้องให้สิทธิ์การเข้าถึงAuthenticated Usersโฟลเดอร์ราก IIS เหล่านั้นเพื่อให้ IIS ทำงานได้
โคลิน

เมื่อฉันคลิกตรวจสอบชื่อระบบจะถามข้อมูลรับรองฉัน ฉันไม่แน่ใจว่าต้องการข้อมูลรับรองผู้ใช้ใดที่นี่ใครช่วยได้บ้าง
RSB

18

คุณไม่จำเป็นต้องเปลี่ยนแปลงอะไรในเว็บของคุณกำหนดค่า

ปัญหาคือสิทธิ์ระบบไฟล์ สิทธิ์ในไฟล์ของคุณไม่อนุญาตให้ผู้ใช้ IIS_IUSRS เข้าถึง web.config (หรือไฟล์ใด ๆ ) เปลี่ยนการอนุญาตไฟล์ใน windows เพื่ออนุญาตให้บัญชี IIS_IUSRS เข้าถึงได้


1
ฉันมีปัญหาที่คล้ายกัน หากใครไม่พบผู้ใช้ IIS_IUSRS ให้ตรวจสอบที่ตั้ง ฉันผิดนัดโดเมนของฉันดังนั้นฉันจึงไม่พบมันทันทีเพราะฉันลืมตรวจสอบเพื่อดูว่ามันอยู่ที่ไหน
jgreep

@Mystere Man ฉันมีปัญหาเดียวกัน ฉันเปลี่ยนการอนุญาตแล้วลอง ฉันยังคงได้รับข้อผิดพลาดเดียวกัน :(
Rauf

"(หรืออาจเป็นไฟล์ใดก็ได้)" ใช้งานได้สำหรับฉันการอนุญาตให้บัญชี IIS_IUSRS เข้าถึง web.config ไม่เพียงพอฉันต้องเปิดใช้งานเพื่อให้สามารถเข้าถึงไฟล์ทั้งหมดในไซต์ได้
Tuyen Nguyen

2
ฉันต้องทำสิ่งนี้เพื่อ IUSR IIS_IUSRS ไม่ทำงานสำหรับฉัน
ทอดด์

ขอบคุณ ฉันอนุญาต 'ทุกคน' โดยได้รับอนุญาตอย่างสมบูรณ์ในโฟลเดอร์แอปพลิเคชันบนเว็บและทำงานได้
Minh Nguyen

16

ทำให้ไฟล์สามารถเข้าถึงได้ในกลุ่มIIS_IUSRS คลิกขวาที่เว็บของคุณกำหนดค่าขยายคุณสมบัติและภายใต้แท็บความปลอดภัยเพิ่ม IIS_IUSRS ให้สิทธิ์การอ่าน / เขียนแก่กลุ่ม

เมื่อกลุ่มไม่พร้อมใช้งานแทนที่ IIS_IUSRS โดยComputerName \ IIS_IUSRS


+1 เคล็ดลับดี คำตอบที่ยอมรับนั้นดี แต่ไม่ต้องพูดถึงว่าคุณอาจต้องเพิ่มชื่อคอมพิวเตอร์ของคุณในหน้า 'IIS_IUSRS' ซึ่งเป็นสิ่งที่ทำให้ฉันผ่านพ้นไปได้
Ralph Lavelle

สิ่งนี้ ("เมื่อกลุ่มไม่พร้อมใช้งาน") มีความหวังของฉัน แต่แม้เมื่อฉันเติมชื่อคอมพิวเตอร์ ("IBM-TAMMYFAYEBAKER.platypus.local \ IIS_IUSRS") ฉันยังคงได้รับข้อผิดพลาดเดียวกัน ฉันลองใช้ชื่อคอมพิวเตอร์เต็มเช่นกัน แต่มันก็ไม่ยอมรับด้วยซ้ำว่าเป็นผู้ใช้ที่ถูกต้อง
B. Clay Shannon

15

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

งานเสร็จแล้ว!


19
มีอะไรในโลกบ้างที่แนะนำการเข้าถึงการเขียนเมื่อจำเป็นต้องอ่านทั้งหมด / downvoted
TristanK

2
IIS เดียวที่ฉันมีคือ IIS_WPG
B. Clay Shannon

1
@ B.ClayShannon ฉันด้วย ฉันมี IIS_WPG เท่านั้น
ฟอร์จูน

13

เมื่อคุณให้สิทธิ์กับIIS_IUSRSคุณควรตรวจสอบว่าในส่วนIIS / การรับรองความถูกต้องของแอปพลิเคชันเว็บของคุณข้อมูลรับรองความถูกต้องระบุตัวตนแบบไม่ระบุชื่อจะใช้ Application Pool Identity ไม่ใช่ IUSR

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


ฉันจะหาส่วนต่อประสานนี้ได้จากที่ใด

ในแท็บมุมมองคุณลักษณะบนเว็บแอปพลิเคชันของคุณ: การรับรองความถูกต้อง
คาร์ลอส

คำตอบนี้ควรเป็นส่วนหนึ่งของสาเหตุคำตอบที่ยอมรับโดยที่คุณไม่ต้องเพิ่ม IUSR ในรายการเข้าถึงโฟลเดอร์ของเว็บไซต์
Laurent S.

7

ด้วยเหตุผลบางอย่าง web.config ของคุณถูกตั้งค่าเป็นอ่านอย่างเดียว ยกเลิกการเลือกตัวเลือกแบบอ่านอย่างเดียวของไฟล์ web.config


หากสิทธิ์ของคุณคือการเข้าถึงแบบเต็มและยังได้รับข้อผิดพลาดนี่คือคำตอบที่ถูกต้อง (y)
Vasil Valchev


4

ฉันใช้ subst เพื่อสร้างการแมปจาก D: ถึง C: เพื่อให้การตั้งค่าเดียวกันกับนักพัฒนาอื่น ๆ ในทีม สิ่งนี้ทำให้ฉันมีข้อผิดพลาดเช่นเดียวกับที่อธิบายไว้ การลบนี้จะแก้ไขให้ฉัน


3

ทางออกที่ยอมรับไม่ได้สำหรับฉัน ฉันใช้ repo Git และโคลนไปยังโฟลเดอร์ต่อไปนี้

c:\users\myusername\source\repos\myWebSite

ฉันสร้างเว็บไซต์ IIS ใหม่แล้วชี้ไปที่เส้นทาง ซึ่งไม่มีสิทธิ์ iis_iusrs ที่แนะนำในโซลูชันที่ยอมรับ เมื่อฉันเพิ่มการอนุญาตก็ยังไม่ทำงาน

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

Pemissions ของผู้ใช้


มีสถานการณ์เดียวกันแน่นอน สิ่งนี้ช่วยได้
Roemer

2

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


2

สำหรับฉันข้อผิดพลาดปรากฏขึ้นในระหว่างการดีบักบนเครื่องของฉันและกลายเป็นที่เกี่ยวข้องกับฐาน web.config ซึ่งเริ่มต้นโดย. NET Framework เมื่อรวบรวมเว็บไซต์ C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config ของฉันมีองค์ประกอบที่ไม่รู้จัก (folderLevelBuildProviders) การแก้ไขนี้แก้ไขข้อผิดพลาด 500.19

ดูที่นี่: ตัวจัดการ IIS ไม่สามารถกำหนดค่า. NET Compilation บน. NET 4 Applications


2

การเปลี่ยน Process Model Identity เป็น LocalSystem แก้ไขปัญหานี้ให้ฉัน คุณสามารถค้นหาการตั้งค่านี้หากคุณคลิกขวาที่กลุ่มแอพพลิเคชั่นและเลือก "การตั้งค่าขั้นสูง" ฉันใช้ IIS 7.5


2

คลิกขวาที่ Web.Config => ความปลอดภัยของแท็บ => แก้ไขปุ่ม => เพิ่มปุ่ม => ปุ่มขั้นสูง => ปุ่มค้นหาทันที => ในผลการค้นหาเลือกกลุ่มของคุณ (ในกรณีของเรา "IIS_IUSRS") => ตกลง => ตกลง => ตกลง


2

นี้เกิดขึ้นกับเราเมื่อIIS แอพลิเคชันที่มีไดเรกทอรีเสมือนกับเส้นทางทางกายภาพที่มีเครื่องหมายทับไปข้างหน้าแทนเครื่องหมาย/ \สิ่งนี้เกิดขึ้นโดยไม่ได้ตั้งใจโดยใช้ powershell Management API สำหรับ IIS ในระหว่างกระบวนการจัดส่งอย่างต่อเนื่องของเรา

ตัวอย่างการกำหนดค่าไม่ดี - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>

ตรวจสอบให้แน่ใจว่าแอphysicalPathททริบิวนั้นไม่มีเครื่องหมายทับซ้าย/, แบ็กสแลชเท่านั้น\

แก้ไขตัวอย่างการกำหนดค่า - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>

1
C:\inetpub\MySite\\MyServiceในกรณีของฉันเส้นทางทางกายภาพมีคู่เช่นหลังเฉือน เปลี่ยนเป็นแบ็กสแลชเดียวที่ใช้งานได้
แอนเดอร์สัน

2

ฉันได้แก้ไขสิ่งนี้โดยเพิ่มการอนุญาตให้อ่านโฟลเดอร์สำหรับผู้ใช้กลุ่มแอปพลิเคชัน (WIN SERVER 2008 R2): C: \ Windows \ System32 \ inetsrv \ config

พื้นหลังเล็กน้อย: เซิร์ฟเวอร์ของเราถูกแฮ็กโดยใช้ข้อผิดพลาดแบบดั้งเดิมที่ผู้ใช้แอปมีสิทธิ์มากกว่าที่ควร (ผู้ดูแลระบบท้องถิ่น)

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


2

เลื่อนโครงการของคุณไปที่ไดรฟ์อื่นที่ไม่ใช่ C: ทำงานให้ฉันด้วยข้อผิดพลาดเดียวกัน


2

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

หากคุณเปลี่ยนพา ธ ไปยังไฟล์ไปที่โลคัลไดรฟ์สิ่งนี้จะแก้ปัญหาได้หากนั่นเป็นปัญหาของคุณ


2

คำตอบทั้งหมดให้ถูกต้องและทำงานภายใต้สถานการณ์ที่แตกต่างกัน

สำหรับฉันแล้วการรีสตาร์ท Visual Studio ทำงานได้


1

ฉันได้รับ "ไม่สามารถอ่านไฟล์การกำหนดค่าได้เนื่องจากการอนุญาตไม่เพียงพอ" เช่นกัน เปิดใช้งานข้อ จำกัด ISAPI และ CGI ใน IIS สำหรับ ASP.NET 4.0 32 บิตและ 64 บิตถูกตั้งค่าให้ปฏิเสธ ทำเครื่องหมายพวกเขาทั้งสองเป็นอนุญาตแก้ไขปัญหาของฉัน


1

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

ฉันสงสัยว่าการแบ่งปันทำให้เกิดความสับสน


0

มีปัญหานี้กับแอปพลิเคชันเสมือน ตั้งค่าการอนุญาตทั้งหมดแล้ว IIS_IUSRS, AppPoolIdentity แล้วให้สิทธิ์การเข้าถึงแบบเต็มกับทุกคน ไม่มีอะไรทำงาน รีสตาร์ท apppool ไซต์และ IIS แล้ว แต่ไม่ทำงาน

ลบแอปพลิเคชันเสมือนจริงและเพิ่มอีกครั้งตั้งแต่เริ่มต้นและเริ่มทำงาน

หวังว่าฉันจะรู้ว่าสิ่งที่แก้ไขได้


0

ตรวจสอบว่าไฟล์ไม่ได้ถูกทำเครื่องหมายว่าเป็นแบบอ่านอย่างเดียวแม้จะมีการอนุญาต IIS_IUSRS ก็ตามมันจะแสดงข้อความเดียวกัน


0

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

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


0

ฉันมีปัญหาเดียวกันและหลังจากทำทุกสิ่งที่เขียนไว้ที่นี่เป็นคำตอบก็ยังคงทำซ้ำ ในช่วงครึ่งหลังของปัญหาคือข้อเท็จจริงที่ว่า. NET ถูกปิดภายใต้ "เปิดหรือปิดคุณสมบัติ Windows"


0

บางครั้งหากเป็นเซิร์ฟเวอร์ใหม่คุณต้องกำหนดค่าหรือติดตั้งคุณสมบัติ ASP.NET บน IIS เพื่อให้สามารถอ่านไฟล์ web.config ของคุณได้

ในกรณีของฉันนี่คือเหตุผล


0

ในกรณีของฉันฉันพยายามโฮสต์หน้าจากไดรฟ์ที่แมป (subst) ปัญหาคือมีการเรียกใช้ subst ภายใต้บัญชีของฉันและผู้ใช้ IIS ไม่สามารถเห็นไดรฟ์เดียวกันได้


0

ฉันให้สิทธิ์และใช้งาน ICACLS.exe แต่ไม่ได้ผล จากนั้นฉันเปลี่ยนเส้นทางกายภาพและใช้งานได้สำเร็จ

(IIS 8.5 windows 2012 R2)

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