ข้อผิดพลาด MSBuild ขณะรวบรวมเว็บไซต์ ASP.NET

ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามคอมไพล์ไซต์ asp.net โดยใช้สคริปต์บิลด์แบบกำหนดเอง

error ASPCONFIG: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level.  This error can be caused by a virtual directory not being configured as an application in IIS.

แม้ว่าคำอธิบายจะละเอียดแต่ฉันก็ไม่เข้าใจความหมายที่แท้จริง ฉันยังไม่ได้กำหนดค่า IIS ให้โฮสต์เว็บไซต์นี้ และฉันไม่คิดว่าจะทำได้เนื่องจากฉันใช้เวอร์ชัน Vista Home Basic ดังนั้นจึงไม่สามารถสร้างเว็บไซต์โดยใช้สคริปต์ที่กำหนดเองได้? โปรดตอบกลับในขณะที่ฉันต้องการทดสอบคุณสมบัตินี้


person kjayakum    schedule 06.02.2009    source แหล่งที่มา
comment
ฉันก็กำลังลบโฟลเดอร์ obj เหมือนกันจนกระทั่งฉันมีข้อขัดแย้งกับสคริปต์บิลด์ที่จำเป็นต้องใช้ Catch-22 ฉันใช้คำตอบที่ยอมรับในลิงก์ SO ต่อไปนี้เพื่อย้ายตำแหน่งของโฟลเดอร์ Obj ไปที่ C:\Temp\BUILD คุณต้องทำต่อไฟล์ csproj แต่มันเป็นวิธีแก้ปัญหาที่ยอดเยี่ยม นี่คือลิงค์: stackoverflow.com/questions/261422/   -  person Valamas    schedule 17.11.2011
comment
เป็นไปได้ที่ซ้ำกันของ allowDefinition=ข้อผิดพลาด msbuild 'MachineToApplication'   -  person Flexo    schedule 17.11.2011


คำตอบ (5)


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

  1. เปิด IIS และนำทางไปยังโฟลเดอร์ที่เหมาะสม
  2. คลิกขวาที่โฟลเดอร์ เลือกคุณสมบัติ
  3. ใต้การตั้งค่าแอปพลิเคชัน และข้างชื่อแอปพลิเคชัน ให้คลิก สร้าง
  4. สมัครและปิด

หากวิธีนี้ไม่สามารถแก้ไขปัญหาของคุณได้ อาจมีข้อผิดพลาดในการกำหนดค่าอื่นเกิดขึ้นกับ IIS หรือแอปพลิเคชันของคุณ

person Karmic Coder    schedule 06.02.2009

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

person Jason Wicker    schedule 20.01.2010
comment
ขอบคุณ นั่นช่วยแก้ไขปัญหาให้ฉันได้ ฉันมีปัญหาเดียวกัน ฉันลบโฟลเดอร์ object\debug แล้วและมันก็ทำงานได้อีกครั้ง - person Michael Wells; 18.09.2010
comment
+1 - เยี่ยมเลย ขอบคุณ หมายเหตุอีกประการหนึ่ง หากคุณสร้างโฟลเดอร์สำรองภายในโปรเจ็กต์ของคุณเมื่อทำการแปลง คุณจะต้องลบ/เปลี่ยนชื่อ web.config ที่นั่นด้วย - person Kyle Rosendo; 21.04.2011
comment
ขอบคุณ! นี่ทำให้ฉันเป็นบ้าไปหลายชั่วโมง web.config ที่หลงทางของฉันอยู่ในโฟลเดอร์ /views ถอนหายใจ - person Patricia; 15.08.2011
comment
@Patricia ซึ่งเป็นเรื่องปกติสำหรับ ASP.NET MVC - มีแนวโน้มว่าจะเป็น web.config ในโฟลเดอร์ obj ที่สร้างขึ้นโดยการทำการ Publish - person Daniel O; 27.10.2011
comment
@DanielO - ฉันพยายามลงคะแนนความคิดเห็นของคุณเนื่องจากเป็นปัญหาที่ฉันมีอย่างแน่นอน การเผยแพร่คือต้นตอของปัญหาอย่างแท้จริง - person Jim Raden; 09.12.2011
comment
ขอบคุณ! ฉันยังค้นหาหนึ่งในโฟลเดอร์ bin\ ของฉันได้ ตามที่ระบุในไฟล์ csproj เป็น OutputPath - person Joisey Mike; 14.02.2012
comment
มีปัญหาเดียวกัน ทำสิ่งนี้ :) for /F %i in ('dir obj /s /b') do del /s /q %i - person jamiebarrow; 26.03.2013
comment
ฉันได้รับข้อผิดพลาดนี้เมื่อสแกนด้วย HP Fortify เท่านั้น การแก้ไขได้ผล - person Keith Walton; 24.11.2015
comment
ขอบคุณ! นี่ทำให้ฉันแทบบ้าตลอดทั้งสัปดาห์ ปรากฎว่ามันเกิดขึ้นเมื่อฉันเปลี่ยนมาใช้ VS 2017 ในแง่ดีเป็นเวลาสองสามวัน ย้อนกลับไปในปี 2558 และระมัดระวังเป็นอย่างยิ่ง - person indra; 04.08.2017

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

person Daniel O    schedule 14.01.2012

หากสิ่งนี้เกิดขึ้นหลังจากสร้างไดเร็กทอรีเสมือนแล้ว ให้ทำดังต่อไปนี้:

  • right-click on web.config
    • properties
      • Build Action: Content
      • คัดลอกไปยังไดเรกทอรีผลลัพธ์: ห้ามคัดลอก
  • if transformed (apply to all configurations)
    • properties
      • Build Action: None
      • คัดลอกไปยังไดเรกทอรีผลลัพธ์: ห้ามคัดลอก
person mg3    schedule 01.05.2015
comment
ตัวเลือกแรกทำงานได้ดีสำหรับฉัน แม้ว่าฉันจะมีการแปลงการกำหนดค่าเว็บก็ตาม - person Nekresh; 01.09.2015
comment
เพื่อนปัญหานี้ทำให้ฉันสะดุดมานาน นี่คือปัญหา! - person FrankyBoy; 09.03.2016

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

person Dave Harding    schedule 06.02.2009