ข้อผิดพลาดในการใช้ส่วนที่ลงทะเบียนเป็น allowDefinition = 'MachineToApplication' เกินระดับแอปพลิเคชัน


193

เป็นข้อผิดพลาดในการใช้ส่วนที่ลงทะเบียนเป็น allowDefinition = 'MachineToApplication' เกินระดับแอปพลิเคชัน

บรรทัดบนสุดในหน้า aspx ของฉันในไดเรกทอรี / portal / ของฉันมีข้อความแสดงข้อผิดพลาดนี้และฉันรู้ว่าเป็นหน้าทั่วไป ฉัน googled ข้อความแสดงข้อผิดพลาดนี้ไม่สิ้นสุดและฉันเห็นโพสต์มากมายบอกให้ฉันกำหนดค่า / portal / โฟลเดอร์เป็นแอปพลิเคชันใน IIS (ที่ฉันมี) และโพสต์อื่น ๆ บอกฉันว่าฉันมี web.configs ซ้อนกัน (แต่ ไม่มีการโพสต์ใดที่ให้แนวทางสำหรับการแก้ไข)

การตั้งค่าของฉันคือฉันมี web.config ในไดเรกทอรีรากของฉันแล้วฉันพยายามสร้างพอร์ทัล บริษัท ในไดเรกทอรี / portal / ไดเร็กทอรี / portal / มี web.config ของตัวเอง (จำเป็น)

web.config line 50 ของฉันเป็นดังนี้:

    <customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/>
    <anonymousIdentification enabled="true"/>
    <authentication mode="Forms"/>
    <membership defaultProvider="MyProvider">

ดังนั้นฉันมี domain.com/web.config และ domain.com/portal/web.config ... ดังนั้นหน้า domain.com/portal/default.aspx ของฉันจะไม่โหลด

อะไรคือทางออกที่แท้จริงของสิ่งนี้? ฉันจะหาวิธีผสาน root web.config ของฉันกับ / portal / directory web.config ของฉันหรือฉันจะออกจากฐานที่นี่หรือไม่?

คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!


1
หากคุณคาดหวังว่า / portal / เป็นแอปพลิเคชันแยกต่างหากภายใต้เว็บไซต์หลักของคุณ (ซึ่งคุณคือถ้าคุณวาง web.config ไว้ที่นั่น) คุณจำเป็นต้องตั้งค่าเป็นไดเรกทอรีเสมือน คุณใช้ IIS เวอร์ชันใด โดยปกติคุณสามารถคลิกขวาที่ไดเรกทอรีและภายใต้ Properties ให้มองหาแท็บ "Directory" และกดปุ่ม "สร้าง" ถัดจากชื่อแอปพลิเคชันซึ่งอาจเป็นสีเทาในปัจจุบัน หากต้องการ จำกัด ขอบเขตของไฟล์ parent web.config ให้ดูที่แอททริบิวต์ inheritInChildApplications = "false" แจ้งให้เราทราบรุ่น IIS ของคุณ
ขีดกลาง

สวัสดีค่ะ ฉันใช้ IIS7 และ / portal / ควรจะเป็นไดเรกทอรีพนักงานสำหรับ บริษัท ของเราที่ผู้คนสามารถจัดเก็บเอกสารเก็บปฏิทินและสิ่งต่าง ๆ เช่นนั้น ฉันคิดว่าเบ็นนีสรุปสิ่งที่คุณพูด - ในตัวเลือกที่สองของเขาเขาสรุปแนวทาง IIS ฉันแน่ใจว่าระหว่างหนึ่งในสองวิธีนี้ฉันสามารถหาคำตอบได้ ขอบคุณสำหรับเวลาในการอ่าน Dash นี้และช่วยฉัน เมื่อฉันเห็นตัวเลือก "สร้าง" ฉันจะรู้ว่าฉันกำลังไป! ขอบคุณอีกครั้ง!
Jason Weber

1
ฉันมีปัญหานี้หลังจากที่ฉันกำหนดโปรไฟล์การเผยแพร่เพื่อรวบรวมข้อมูลก่อนเผยแพร่ ดังนั้นโฟลเดอร์ obj จะหมวก web.config ซึ่งกำลังทำลายโครงการหลังจากลบทุกอย่างในโฟลเดอร์ obj มันทำงานได้อีกครั้ง
Rumplin

คำตอบ:


219

สำหรับข้อมูลพื้นฐานเท่านั้น ข้อมูลการกำหนดค่าสำหรับเว็บไซต์ ASP.NET ถูกกำหนดไว้ในไฟล์ Web.config หนึ่งไฟล์ขึ้นไป การตั้งค่าการกำหนดค่าจะถูกนำไปใช้ในลักษณะลำดับชั้น มีไฟล์ Web.config“ ระดับโลก” ที่สะกดข้อมูลการกำหนดค่าพื้นฐานสำหรับเว็บไซต์ทั้งหมดบนเว็บเซิร์ฟเวอร์ ไฟล์นี้อาศัยอยู่ใน%WINDIR%\Microsoft.Net\Framework\version\CONFIGโฟลเดอร์ คุณยังสามารถมีไฟล์ Web.config ในโฟลเดอร์รูทของเว็บไซต์ของคุณ ไฟล์ Web.config นี้สามารถแทนที่การตั้งค่าที่กำหนดในไฟล์“ global” Web.config หรือเพิ่มอันใหม่ นอกจากนี้คุณอาจมีไฟล์ Web.config ในโฟลเดอร์ย่อยของเว็บไซต์ของคุณซึ่งกำหนดการตั้งค่าการกำหนดค่าใหม่หรือการตั้งค่าการแทนที่การกำหนดค่าที่กำหนดในไฟล์ Web.config ที่สูงกว่าในลำดับชั้น

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

ที่มา: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

คุณได้ระบุ 2 แนวทางที่เป็นไปได้อย่างถูกต้อง

1 - ขึ้นอยู่กับเนื้อหาของ web.config ที่สองของคุณและหากการตั้งค่าของคุณอนุญาต (เช่นวิธีการรับรองความถูกต้องแบบเดียวกัน) - เพิ่มการ<authentication>ตั้งค่าและองค์ประกอบอื่น ๆ ที่ควรกำหนดทั่วโลกไว้ใน web.config ด้านบน

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


8
ใช่ Benni ช่วยและล้างสิ่งออกไปอย่างมากมาย ฉันขอขอบคุณที่คุณสละเวลาตอบคำถามนี้อย่างแท้จริง ฉันเรียนรู้เพียงแค่อ่านคำตอบของคุณและตอนนี้สิ่งต่าง ๆ ก็สมเหตุสมผลมากขึ้น ฉันคิดว่าฉันจะพยายามรวมสองไฟล์ web.config - อย่างน้อยส่วนการรับรองความถูกต้อง - และหากไม่ได้ผลฉันจะตรวจสอบตัวเลือก IIS7 ที่หลากหลาย ขอขอบคุณอีกครั้งสำหรับเวลาและข้อมูลของคุณ Benni!
Jason Weber

13
เมื่อฉันสร้างแพ็คเกจการปรับใช้เว็บมันทำให้เกิดปัญหานี้ในครั้งต่อไปที่ฉันสร้าง มันมีสำเนาของ Web.config ใน MyWebSiteProject / obj / Debug / ...
Curtis Yallop

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

2
ฉันพบปัญหาที่ใหญ่ที่สุดที่นี่คือการสร้างครั้งแรกทำงานได้ แต่จากนั้นการสร้างตามมาล้มเหลวเนื่องจากการตั้งค่าที่ได้รับอนุญาตใน web.config ระดับบนสุดไม่ถูกกฎหมายใน web.config ที่ถูกคัดลอกไปยังโฟลเดอร์ obj เคล็ดลับคือการลบคุณลักษณะที่กระทำผิดที่ระดับบนสุดและลบโฟลเดอร์ obj เพื่อรับ web.config ที่ถูกกฎหมายในโฟลเดอร์ย่อย เห็นได้ชัดว่านี่เป็นข้อผิดพลาดใน Visual Studio แต่การแก้ไขเป็นเรื่องตรงไปตรงมาหากคุณไม่จำเป็นต้องใช้คุณลักษณะใน web.config ระดับบนสุดที่ผิดกฎหมายใน web.config ระดับย่อย
csells

2
ใน Visual Studio 2012 และ 2013 เมื่อไฟล์กำหนดค่ามีการคัดลอกไปยังไดเรกทอรี = เสมอคัดลอกกระบวนการเผยแพร่ดูเหมือนว่าจะวางสำเนาของไฟล์กำหนดค่าลงในโฟลเดอร์ bin และ obj ซึ่งก่อให้เกิดข้อยกเว้นนี้ วิธีแก้ปัญหาสำหรับการเผยแพร่ปัญหานี้ระบุโดย Tim C. คือการตั้งค่าคุณสมบัติไฟล์กำหนดค่าเป็นห้ามคัดลอก
criticalfix

68

สำหรับสิ่งที่คุ้มค่าฉันได้รับข้อผิดพลาด "เป็นข้อผิดพลาดในการใช้ส่วนที่ลงทะเบียนเป็น allowDefinition = 'MachineToApplication' เกินระดับแอปพลิเคชัน" และสิ้นสุดการแก้ไขโดยการล้างไดเรกทอรี \ myWebApp \ obj \ Debug และ \ myWebApp \ obj \ Release ฉันต้องตั้งค่าหน้าเริ่มต้นเริ่มต้นด้วย แต่หลังจากนั้นแอพก็เริ่มต้นได้ดี HTH


24
+1 การลบโฟลเดอร์ OBJ ดูเหมือนจะเป็นการแก้ไขทั่วไป ... stackoverflow.com/a/5175074/188926
Dunc

1
การลบเนื้อหาของโฟลเดอร์ OBJ ได้แก้ไขสิ่งนี้ให้ฉันด้วย ดูเหมือนจะมีสาเหตุอื่น ๆ อีกมากมายที่ทำให้เกิดข้อผิดพลาดนี้ วลีที่ช่วยให้ฉันค้นหาคำตอบที่ถูกต้องคือ "ในขณะที่เผยแพร่"
Jim Neff

1
ถ้าฉันมีโฟลเดอร์ OBJ ฉันจะลองทำดู
B. Clay Shannon

การตั้งค่าหน้าเริ่มต้นเริ่มต้นเป็นการหลอกลวงสำหรับฉันหลังจากลบโฟลเดอร์ดีบั๊กไม่เพียงพอ (โปรดตรวจสอบให้แน่ใจว่าได้ทำทั้งสองอย่าง)
LoJo

ลองใช้วิธีนี้และใช้งานไม่ได้ จากนั้นฉันก็รู้ว่าฉันลืมแปลงไฟล์ที่เผยแพร่ไปเป็นแอพพลิเคชั่นภายใน IIS
eaglei22

60

ดังที่ RY4N กล่าวไว้ข้างต้นไม่จำเป็นต้องเป็น web.config ในโฟลเดอร์โครงการของคุณที่ทำให้เกิดปัญหา ในบางกรณีฉันพบว่าการเรียกใช้งานบิลด์ภายใต้โพรไฟล์ Debug จะทิ้งเศษซากไว้ในโฟลเดอร์ Debug ภายใต้โครงการที่เป็นปัญหา มักจะมีไฟล์ web.config ที่นี่ซึ่งนำไปสู่ข้อผิดพลาดด้านบนเมื่อคุณเรียกใช้งานบิลด์ภายใต้โปรไฟล์ Release

โซลูชันที่เหมาะกับฉันที่นี่คือการลบโฟลเดอร์ Debug ทั้งหมดที่บิลด์ก่อนหน้านี้สร้างขึ้นภายใต้ไดเรกทอรีโครงการ


1
ขอบคุณ Matthew ในที่สุดฉันก็คิดออกมาสักครู่แล้ว แต่ใช่ฉันต้องรวบรวมในการเปิดตัวไม่ได้แก้จุดบกพร่อง ขอบคุณที่คุณสละเวลาในการตอบสนอง!
Jason Weber

3
ขอบคุณสำหรับทิป! ฉันเพิ่งลบโฟลเดอร์ bin และ obj ในโครงการเว็บไซต์ของฉันและแก้ไขปัญหาเมื่อฉันสร้างใหม่
พอล Stegler

22

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

แม้ว่าตัวเลือก Build Views จะดีมาก แต่ฉันก็ปิดการใช้งานเพราะ "ข้อผิดพลาด" นี้จะปรากฏขึ้นเสมอและทำให้ฉันไม่สามารถเรียกใช้แอปได้


2
ขอบคุณพระเจ้า ... ที่ดูเหมือนจะทำเคล็ดลับพร้อมกับข้อเสนอแนะอื่น ๆ ฉันขอขอบคุณที่คุณสละเวลาตอบ!
Jason Weber

1
สิ่งนี้ก็เกิดขึ้นกับฉันเช่นกัน ไม่แน่ใจว่าทำไม แน่นอนว่า heck ทำให้การตั้งค่า "MvcBuildViews" มีประโยชน์น้อยกว่ากันมาก
Ken Smith

มีวิธีให้ MvcBuildViews ตั้งค่าเฉพาะสำหรับการตั้งค่าผู้ใช้หรือไม่ มองหาไฟล์ webproject.csproj.user หรือไม่
ซี Tewalt

ฉันเริ่มได้รับข้อผิดพลาดนี้หลังจากติดตั้งอัปเดต 2 สำหรับ VS 2013 ฉันมีโปรเจ็กต์ที่มีระดับสูงสุดและเว็บไซต์ลูกที่ซ้อนกันทั้งคู่ถูกกำหนดค่าเป็นแอปพลิเคชัน IIS การปิด MvcBuildViews ช่วยแก้ปัญหาให้ฉันด้วย
Greg Enslow

13

เพียงเพื่อจะพูด

ถ้าคุณอัปเกรด (เช่น 2008 -> 2010) โครงการ Visual Studio จะสร้างการสำรองข้อมูล (ถ้าคุณอนุญาต) ในโซลูชันโครงการที่เพิ่มเข้าไปในโซลูชันใหม่ Webconfig เก่าคือจุดที่ข้อผิดพลาดชี้ไปด้านบนสามารถเกิดจาก .

" ไฟล์ Web.config ในหนึ่งในโฟลเดอร์ย่อยของเว็บไซต์ที่มีองค์ประกอบการกำหนดค่าเหล่านี้ซึ่งไม่สามารถกำหนดได้เกินระดับแอปพลิเคชัน " @benni_mac_b

หากต้องการแก้ไข:เพียงลบโฟลเดอร์สำรองออกจากโครงการและโซลูชันในสถานการณ์นี้


ขอบคุณสำหรับข้อมูลนั้น Ryan .... ฉันมีเพียง VS 2010 ฉันไม่แน่ใจว่าคุณหมายถึงอะไรเมื่อคุณพูดว่าลบโฟลเดอร์สำรองออกจากโครงการและวิธีแก้ปัญหา แต่ฉันจะพิจารณาคำตอบของคุณต่อไป ขอขอบคุณอีกครั้งที่สละเวลาเพื่อช่วยฉันออกไป! ฉันเพิ่งโพสต์คำถามติดตามที่นี่: stackoverflow.com/questions/10414751/ …
Jason Weber

12

ฉันเกิดขึ้นด้วยเหตุผลที่เป็นไปได้อื่นที่เกิดขึ้น

ฉันมีเว็บแอปพลิเคชันรุ่นเก่าที่สร้างขึ้นใน 2.0 ฉันย้ายไปยังโซลูชัน 4.5

แอปพลิเคชั่นที่สร้างและดีบั๊กได้ดีเมื่ออยู่ใน Visual Studio แต่เมื่อฉันพยายามเผยแพร่เว็บแอปพลิเคชันข้อผิดพลาดนี้เกิดขึ้นซ้ำแล้วซ้ำอีก

ในที่สุดฉันก็ค้นพบปัญหาคือ Build Build สำหรับไฟล์ web.config คือ "Embedded Resource" มากกว่า "Content" นอกจากนี้ไดเรกทอรีคัดลอกไปยังเอาต์พุตถูกตั้งค่าเป็น "คัดลอกเสมอ" มากกว่า "ห้ามคัดลอก" ฉันไม่รู้ว่าเมื่อใดที่มีการตั้งค่าเหล่านี้ แต่ฉันเชื่อว่าแอปพลิเคชันรุ่น 2.0 กลับมาอีกครั้ง

การแก้ไขการตั้งค่าสำหรับไฟล์ web.config ทำให้การเผยแพร่ใน Visual Studio 2012 สามารถทำงานได้อย่างไม่มีที่ติ


ได้ลองทุกวิธีอื่น ๆ อันนี้ช่วยได้ โครงการของฉันถูกโยกย้ายเมื่อเวลาผ่านไปจาก Visual Studio 2010 ถึง 2015 ดังนั้นบางที "Always Copy" อาจเป็นค่าเริ่มต้นในปี 2010
Andreas Rathmayr

คุณสมบัติสำหรับ web.config ของฉันถูก จำกัด ไว้ที่สอง: FileName และ FullPath; มิฉะนั้นฉันจะตรวจสอบว่า Build Action สำหรับมันคืออะไร
B. Clay Shannon

11

ฉันมีปัญหาเดียวกันในโครงการ MVC ข้อผิดพลาดเกิดขึ้นเมื่อฉันพยายามเผยแพร่ ปรากฎว่าโฟลเดอร์ obj ควรว่างเปล่า (หรืออย่างน้อยก็ไม่มีweb.config)

วิ่งCleanไม่ได้ทำเคล็ดลับสำหรับฉัน

ฉันแก้ไขปัญหาด้วยการล้างobjโฟลเดอร์ก่อนบิลด์ใด ๆ (การสร้างโครงการจะไม่ใช้เวลานานขนาดนั้นในกรณีของฉัน)

ฉันยกเลิกการโหลดโครงการและเพิ่มสิ่งต่อไปนี้ใน BeforeBuild Target

<Target Name="BeforeBuild">
    <Delete Files="$(SolutionDir)\$(ProjectDir)\bin\**\*.*" />
    <Delete Files="$(SolutionDir)\$(ProjectDir)\obj\**\*.*" />
    <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\bin" />
    <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\obj" />
    <Message Text="Clean obj/bin from web project" />
</Target>

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


7

"เป็นข้อผิดพลาดในการใช้ส่วนที่ลงทะเบียนเป็น allowDefinition = 'MachineToApplication' เกินระดับแอปพลิเคชันข้อผิดพลาดนี้อาจเกิดจากไดเรกทอรีเสมือนที่ไม่ได้กำหนดค่าเป็นแอปพลิเคชันใน IIS"

ฉันมีปัญหานี้ใน VS.NET ปรากฎว่าเมื่อฉันกำหนดค่าการแปลงค่าบางอย่างฉันได้ตั้งค่าคุณสมบัติของไฟล์ Web.config อย่างผิดพลาด "Copy always" ฉันมักจะตั้งค่าไฟล์แปลงเป็น "คัดลอกเสมอ" แต่ปล่อยให้ไฟล์รูทของ web.config เป็น "ห้ามคัดลอก"

ระวังเพราะการเปลี่ยนคุณสมบัติของ web.config จะเปลี่ยนการแปลงแบบซ้อนทั้งหมด

ดังนั้นเพื่อแก้ไข:

1) เปลี่ยน web.config เป็น "ห้ามคัดลอก"

2) หรือหากคุณใช้การแปลงการตั้งค่าให้ตั้งเป็น "คัดลอกเสมอ"

3) ลบโฟลเดอร์ obj และ bin ออกจากโซลูชัน (อาจไม่สามารถมองเห็นได้ดังนั้นให้เลือกโหนดโครงการในโซลูชัน Explorer และคลิกปุ่มแถบเครื่องมือ "แสดงไฟล์ทั้งหมด"

4) เผยแพร่

ทำงานให้ฉัน


5

ฉันพบข้อผิดพลาดนี้ระหว่างการเผยแพร่แอปพลิเคชันเท่านั้น

คุณสมบัติของไฟล์ web.config (และการแปลง) ถูกตั้งค่าเป็น:

  • Build Action - None
  • Copy to Output - Always.

วิธีแก้ไขคือเปลี่ยนการตั้งค่าเป็น:

  • Build Action - Content
  • Copy to Output - Do not Copy

4

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

หลังจากขุดไปรอบ ๆ ฉันพบรายงานข้อผิดพลาดนี้ในเว็บไซต์ Connect https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level

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


4

ลบและสร้างไดเรกทอรีเสมือนอีกครั้ง คลิกขวาและแปลงไดเรกทอรีเสมือนเป็น " แอปพลิเคชัน "


3

คลิกที่Web.configไฟล์จาก Solution explorer และคลิกขวาที่ "Properties" และเปลี่ยนเป็น "Copy to Output Directory: Do copy"

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


1

สำหรับฉันเหตุผลก็คือโฟลเดอร์ obj อยู่ภายใต้โฟลเดอร์เว็บไซต์และหลาย web.config ปรากฏขึ้นหลังจากสร้างการกำหนดค่าที่แตกต่างกัน ฉันแก้ไขปัญหาภายใต้ vs2012 โดยย้ายโฟลเดอร์ obj ออกจากเว็บไซต์ เมื่อต้องการทำสิ่งนี้ฉันได้เพิ่ม manualy (ใน notepad) $ (SolutionDir) \ Obj \ $ (การกำหนดค่า) ให้กับการกำหนดค่าทุกรายการในไฟล์โครงการเว็บไซต์


1

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

"เป็นข้อผิดพลาดในการใช้ส่วนที่ลงทะเบียนเป็น allowDefinition = 'MachineToApplication' เกินระดับแอปพลิเคชันข้อผิดพลาดนี้อาจเกิดจากไดเรกทอรีเสมือนที่ไม่ได้รับการกำหนดค่าเป็นแอปพลิเคชันใน IIS"

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

หวังว่านี่จะช่วยใครซักคน !!


1

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


1

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

จาก vs: Build> Clean Solution

จากนั้นสร้างใหม่


1

Windows start -> เปิด Sites -> IIS -> คลิกขวาที่เว็บไซต์ของคุณ -> จัดการเว็บไซต์ -> Advance Setting -> เรียกดู Physical Path -> ลองเลือกโฟลเดอร์ย่อยของครั้งที่คุณเลือก

ตรรกะคือไฟล์เว็บ config ภายในโฟลเดอร์ย่อยกำลังพยายามทำการเปลี่ยนแปลงและไม่ได้รับอนุญาตต้องเป็นโฟลเดอร์ที่เลือก: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx


1

ฉันยังได้รับข้อผิดพลาดนี้เมื่อพยายามปรับใช้เว็บไซต์ย่อยในเว็บไซต์

ทางออกคือ:

  1. คุณต้องลบแท็บปรับแต่งบางอย่างเช่น: profile , membership , roleManager , sessionStateใน sub web.config
  2. เปลี่ยนการพิสูจน์ตัวตนเป็นไม่มีเป็น: <authentication mode="None" />
  3. และไปที่ IIS คลิกขวาที่โฟลเดอร์ย่อย- > เพิ่มแอปพลิเคชัน
  4. รีเซ็ต IIS เพื่อแก้ไขปัญหานี้

หากได้รับปัญหาอื่น ๆ อย่าลังเลที่จะปิงฉันบางทีฉันอาจจะช่วยได้


1

ฉันได้รับข้อผิดพลาดนี้บนโลคัลโฮสต์ใน Visual Studio 2017 และการรีสตาร์ท Visual Studio แบบง่าย ๆ ก็แก้ปัญหาได้

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


0

ตรวจสอบให้แน่ใจว่าคุณไม่ได้ตกหลุมพรางในการเข้าถึงเว็บไซต์ท้องถิ่นของคุณผิดผ่าน localchost / mysite.test ซึ่งควรเป็น mysite.testซึ่งจะทำให้คุณมีข้อผิดพลาดนี้

เมื่อคุณเข้าถึงไซต์ของคุณเช่น localhost / dir_name ในกรณีนี้ web.conf ของคุณจะต่ำกว่าระดับรูทดังนั้นข้อผิดพลาดนี้


0

ฉันกำลังย้ายแอพและแอพมีหลายแอพ (หลาย web.configs) อยู่ภายใน .. สิ่งที่ฉันทำคือเข้าไปที่ IIS จากนั้นคลิกขวาที่โฟลเดอร์ย่อยจากนั้น "แปลงเป็นแอปพลิเคชัน" และทำงานได้


0

ฉันได้รับข้อผิดพลาดนี้แตกต่างจากคนอื่น:

ฉันย้ายจาก vs2010 ด้วยโครงการปรับใช้เว็บเป็น vs2012 และเว็บเผยแพร่โปรไฟล์ใหม่

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

สิ่งนี้ทำให้เกิดข้อผิดพลาดระหว่างการเผยแพร่ซึ่งทำให้ฉันประหลาดใจในตอนแรกเพราะฉันเผยแพร่ไปยังระบบไฟล์ไม่ใช่ IIS (ฉันคิดว่า)

วิธีแก้ไขคือเปลี่ยนการเผยแพร่เป็นโฟลเดอร์ภายนอกโครงการเว็บ


0

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


0

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


0

ความผิดพลาดของฉันคือการคัดลอกวาง web.config ในโฟลเดอร์อื่นบนเว็บเซิร์ฟเวอร์โดยไม่ตั้งใจ


0

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันลืมแปลงโครงการที่เผยแพร่เป็นแอปพลิเคชันภายใน IIS

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