Помилка: enableDefinition = 'MachineToApplication' поза рівнем програми


193

Я завантажив онлайн-проект в ASP.Net. Під час роботи програми я отримую помилку

Помилка використання розділу, зареєстрованого як enableDefinition = 'MachineToApplication' за межами рівня програми. Ця помилка може бути викликана тим, що віртуальний каталог не конфігурується як програма в IIS.

Які зміни я повинен внести в web.config або в іншому місці, щоб зробити цю роботу?


53
Жодна відповідь, знайдена в Інтернеті, не працювала на мене. Мою проблему було вирішено шляхом показу всіх прихованих файлів / папок та видалення objпапки.
The Muffin Man

6
Ця проблема все ще проявляється у VS2012. Я відкрив звіт про помилки в Microsoft. Усі, хто зіткнувся з проблемою, просимо підсилити звіт про помилку connect.microsoft.com/VisualStudio/feedback/details/779737/…
Eric J.

4
видалення папки obj вирішило цю проблему і для мене. дякую @Nick! (вибачте за відродження)
Jordan Wayne Crabb


у моєму випадку додаткова web.config у підпапці викликає цю проблему. Коли я видаляю цей додатковий web.config, помилка відсутня
Dio Phung

Відповіді:


96

Я щойно стикався з цим «захопленням». Здається, він представляє себе лише після того, як я опублікував веб-додаток у режимі випуску.

Єдиний спосіб послідовно вирішити проблему, яку я знайшов - це дотримуватися цього контрольного списку:

  1. Очистіть рішення, поки ваше рішення налаштоване в режимі випуску.
  2. Очистіть рішення, поки ваше рішення налаштовано в режимі налагодження.
  3. Збірка під час налаштування рішення в режимі налагодження.

18
Тільки відповідь, що працював і для мене. У мене було багато інших помилок, які чекали мене після цього, але вони не були пов'язані між собою. Я потрапив сюди, встановивши MvcBuildViewsна true.
Бенджамін

+1 BTW: Я думаю, причиною цього для мене було те, що найсвіжішою моєю версією була « Налагодження» . Я відкрив рішення, зробив помилку та спробував побудувати в режимі R Release . Чистка в Release не працювала, але чистка в Debug зробила. (Можливо, комбо з 2 було те, що було потрібно, тобто очистити будь-які старі рефлекси на dll, налагодження чи випуск ).
Scotty.NET

4
Я зробив чисте , потім пішов * властивість проекту -> Web -> Створити віртуальний каталог , а потім питання було вирішене
gldraphael

Чисте і відновлення в режимі налагодження - все, що мені потрібно. Немає необхідності перемикатися вперед і назад між випуском і налагодженням. Але так, ЧИСТЬ дуже важливий. У цьому і полягає суть справи.
markaaronky

1
У моєму випадку чистота недоступна, чого я ніколи не бачив. Це дуже стара програма VB.NET, яку я успадкував від колишнього колеги.
tnk479

82

Просто натрапи на цю посаду, і це сталося зі мною.
Просто Cleanпроект і помилка відпадає. (має бути помилка VS2010)


це рішення, якщо ви отримаєте це як помилку в Visual Studio.
Гедеон

22
Іноді objпапка не очищає папку. Це іноді також потрібно видалити.
jaypeagi

1
Ні Очищення, ні видалення об'єкта не працювали. Рішення Джонні Рейлі працювало на мене.
Бенджамін

Щоб позбутися цього, мені довелося запускати чисто в режимах налагодження та випуску. Запуск його для просто налагодження, здавалося, не вирішив проблему.
Juha Palomäki

Така ж проблема існує і в VS2013SP1. Просте очищення дозволяє мені знову розгорнутись.
Брайан Кноблауч

25

У мене щойно виникала ця проблема при створенні другої версії мого веб-сайту. Це не сталося, коли я побудував його вперше.

Я щойно видалив папки бін та obj, запустив «Чисте рішення» і створив його знову, на цей раз без жодних проблем.


2
Це єдине рішення, яке працювало для мене в VS Express 2012 для Web. Крім того, я почав отримувати цю помилку лише після того, як створив конфігурацію рішення, і додав MvcBuildViews, встановлений до true, до своєї PropertiesGroup у джерелі .csproj.
Джеремі Кук

20

Жоден. Потрібно налаштувати каталог, який ви розмістили на веб-сайті, як веб-додаток у IIS .


1
Хоча технічно це зміна "в іншому місці, щоб зробити цю роботу";)
Джаф - Бен Дюгід

2
і це рішення, якщо ви отримаєте це як помилку у своєму веб-додатку! = P
gideon

Я вже налаштовувався як додаток. Рішення Джонні Рейлі спрацювало в моєму випадку.
Бенджамін

Я просто намагаюся змусити програму веб-форм шаблону працювати. Це добре на localhost, але не на сервері в локальній мережі. Це рішення працювало для мене: VS2015 CE, Windows Server 2008 у моїй локальній мережі. Я використовував цю сторінку MS, щоб пояснити, що робити на IIS: support.microsoft.com/en-gb/kb/917413 . У коді шаблону немає змін.
Тім

16

Ця помилка виникає при спробі відкрити проект як веб-сайт. Найпростіший спосіб визначити, чи ви створили веб-сайт чи проект, це перевірити папку рішення (тобто, де ви зберегли свій код) і побачити, чи є у вас * .sln файл у кореневому каталозі, якщо ви це зробите, я створив проект.

Додаю, я зіткнувся з цією помилкою саме зараз, коли я намагався відкрити проект, якийсь час створив назад, вибравши "Файл", "Відкрити веб-сайт" у меню Visual Studio, тоді як мені слід було вибрати "Файл", "Відкрити проект" замість цього. Я зіткнувся з обличчям, як тільки зрозумів :)


це була і моя проблема
mgrenier

13

У Visual Studio 2013 деякий час я боровся з цим, і це досить просто вирішити, просто слідкуйте за тим, що винятки говорять, що "віртуальний каталог не конфігурується як програма в IIS"

У моєму випадку я WebServiceпосадив всередину IIS websiteтак

  1. Я відкрив веб-сайт у менеджері IIS
  2. правою кнопкою миші натиснув папку WCF
  3. клацнув Convert to Application
  4. а потім подано с Ok

WCF повертається і працює.


1
Я зіткнувся з цією проблемою, коли я перемістив свою заявку на веб-сайт за замовчуванням. Точка 3 зробила трюк, щоб вирішити мою проблему.
бікрам с.

Це працювало для мене, коли ми перейшли на новий веб-сервер. Зробивши "Перетворити в додаток", символ папки змінився, і веб-версія ASP.NET MVC почала працювати на цьому веб-сервері.
Грег Барт

11

Помилка говорить про те, що код, який ви використовуєте, очікує, що віртуальний каталог буде встановлений на IIS.

Перегляньте документацію та додайте необхідний віртуальний каталог. Це повинен бути каталог, який має web.configв собі (а не кореневий каталог).


8
Видалення другого web.config у нижньому каталозі вирішило проблему для мене.
Лукас Б

10
Один з моїх хлопців були свої <authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>в його Web.configв Viewsа потім папці стовбура, який викликав цю проблему.
Серж Саган

10

Якщо у вас є проект MVC з увімкненою збіркою переглядів, одне з рішень - видалити папку obj перед збіркою. Додати у файл проекту:

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

Ось стаття: Як видалити бін та / або папку obj перед складанням або розгортанням


8

Недавня зміна web.config може бути в неправильному файлі web.config.

<machineKey...>Властивість було додано Views / web.config . Незалежно від того, скільки очищає та відновлює, залишилася помилка. Виправленням було переміщення властивості у корінь /web.config .


Ми випадково скопіювали батьківський Web.config у папку / Views. Помістіть туди оригінальну, значно меншу версію для папки Views, і сайт знову запрацював.
Grandizer

6

якщо ви коли-небудь стикаєтеся з цією помилкою

Помилка використання розділу, зареєстрованого як enableDefinition = 'MachineToApplication' за межами рівня програми. Ця помилка може бути викликана тим, що віртуальний каталог не конфігурується як програма в IIS

РЕШЕННЯ У
мене була та сама проблема з VS 2012. Я вирішив це шляхом

  1. Вивантажте поточний проект
  2. редагуйте свій .csproj
  3. Знайдіть це <MvcBuildViews>false</MvcBuildViews>
  4. Замість помилкового змініть значення на справжнє
  5. Завантажте ще раз свій проект, і ви більше не повинні мати цю помилку

Якщо у вас є, тоді одне рішення - видалити вміст папки obj з проекту, згенерованого компілятором.


18
Це дивно, налаштування MvcBuildViews- trueце те, як я отримав помилку в першу чергу.
Бенджамін

Я також почав отримувати повідомлення про помилку після зміни MvcBuildViews на true. Я позбувся повідомлення про помилку, змінивши значення назад на хибне.
Juha Palomäki

3
Я зробив «чистого рішення» в обох випуску і налагодження режимів і тепер збірка працює також з<MvcBuildViews>true</MvcBuildViews>
Юха Palomäki

@ JuhaPalomäki супер солодкий! Дякую.
Харун

У мене була якраз протилежна ситуація, ніж у @visar_uruqi. Я маю на увазі у своєму .csproj- файлі у мене параметр MvcBuildViews встановлений на true, і коли я встановив значення false, помилка була опущена (не показана).
Бронек

5

У моєму випадку проблема з’явилася лише після того, як я опублікував проект у підкаталозі. Через брак знань я розмістив свій web_publishпідкаталог всередині web_projectкаталогу.

Зрозуміло, що web_publishмістить також те саме Web.config, що і проект. Однак web_projectне знає, що мого web_publishслід уникати при пошуку Web.configs у вкладених підкаталогах. Таким чином, Web.configs були дублюються і з'явилася помилка.

Рішення полягало в тому, щоб розмістити своє web_publishдесь в іншому місці.


5

У моєму випадку була папка "Резервне копіювання", яка містила ще одну копію всього веб-сайту. Це означало інше, web.configтому збірка не вдалася з цією помилкою. Я видалив папку "Резервне копіювання", зробив рішення "Очищення" на налагодженнях і випуску, і помилка зникла.


У мене була подібна ситуація, хтось створив на папері «Опублікований» під папку в корені Веб-сайту (це старий веб-проект, один з тих, у якому немає файлу рішення), і в ньому була Web.config. Помилка виникла, коли Visual Studio намагався її створити, і, звичайно, не було виправлено кількість очищення / видалення "obj" папок тощо. Я бачив досить багато випадків цієї помилки, і майже завжди це дублікат Web.config десь ховається… (справді погано повідомлення про помилку!)
Детально

4

У моєму випадку

Рішення містить 6 проектів, 1 головний та 5 підкаталогів. всі підкаталоги, що мають web.config.

Під час запуску будь-якої сторінки в підкаталогах я отримував таку ж помилку.

Я видалив цей рядок із web.config,

<authentication mode="Windows"/>

що працювало на мене.


Який рядок ви видалили?
Марк Беррі

Рядок був там, але не відображався через певну проблему з відступом, я думаю. Я редагував і вставляв код у блок коду, він показує зараз. Будь ласка, перевірте і повідомте мені, чи можу я в чомусь допомогти.
p_champ

Дякую, що підтверджує рядок, що він не працював і для мене. У мене є лише один сайт, тому я обійшов його, відкрившись як веб-сайт, а не проект.
Марк Беррі

4

Очищення проекту Видаліть папку / obj (можливо, використовуючи опублікувати та розгортати? - в ній помилка)


Єдине рішення, яке працювало на мене. Перейдіть сюди, встановивши <MvcBuildViews> true </MvcBuildViews>.
Павло

3

Моя проблема полягала в тому, що я випадково опублікував свій веб-сервіс у попередньо завершеному місці на новій установці VS2010.

Я опублікував папку під назвою PreCompiledWeb , і наявність web.config, я підозрюю, зіпсувала її.

Я просто занурив папку і оновив проект.

Якщо двічі клацнути цю помилку - це перенесло мене до того помилкового файлу web.config, який підказав мені.


2

Це може бути проблема версії, як ви завантажите проект .Net Framework 2.0 і хочете відкрити його у VS2008, тоді вам потрібно буде оновити до останньої версії, і VS створить резервну копію папки в тому ж кореневому каталозі. отримати відповідь тут .


Відповідь ranganh в тут дає деякі подробиці.
Марк Беррі

2

У мене виникла помилка під час створення рішення із створеним в моєму рішенні проектом Web Deployment Project. Я вирішую помилку, видаляючи папку, в якій побудований проект веб-розгортання. Ця папка вказана в атрибуті властивостей WDP "Папка проекту"


2

Видаліть папки бін та obj. Потім відновіть рішення.


Для Провідника файлів використовуйте пошуковий запит "obj" kind: = папка та "bin" kind: = папка, щоб знайти / видалити ці папки. Це працювало для мене.
Роберт Дж. Добрий

2

Мабуть, у моєму рішенні було два файли web.config. Я використовую MVC4, а в розділі Перегляди був ще один конфігураційний файл, і я робив зміни в неправильному файлі. Виправлена ​​там допомогла мені.

Але ви завжди можете змінити переадресацію / маршрут за замовчуванням у файл global.asax.


1

Можливо, у папці проекту є папка проекту sub asp.net, яка не налаштована як віртуальний каталог. Налаштування проекту для запуску в IIS.



1

У мене ця проблема частіша, якщо у файлі проекту ввімкнено "true".

  1. Встановити помилкове

Як каже Джонні:

  1. Очистіть рішення, поки ваше рішення налаштоване в режимі випуску.
  2. Очистіть рішення, поки ваше рішення налаштовано в режимі налагодження.
  3. Збірка під час налаштування рішення в режимі налагодження.

1

У мене був проект, який я не хотів бути веб-додатком, я хотів, щоб це була папка. Відповідь було повністю видалити файл web.config. Він належить лише до кореня програми.


1

Якщо ви стикаєтеся з цією проблемою під час публікації свого веб-сайту чи програми на якомусь сервері, я використовував просте рішення - конвертувати папку, що містить файли, у веб-додаток.


4
Привіт, Ласкаво просимо до Stack Overflow! Чи можете ви, будь ласка, розширити свою відповідь? Чи можете ви пояснити, як перетворити папку у веб-додаток? Це допоможе іншим краще зрозуміти вашу відповідь.
Джессі

1
У IIS Manager, під панеллю З'єднання праворуч, клацніть правою кнопкою миші каталог на створених вами сайтах (або веб-сайті за замовчуванням) та виберіть Convert to Application.
Aske B.

1

У мене така ж проблема в VS 2013 після публікації мого проекту в режимі налагодження. Проблему було вирішено видаленням obj / файлів


1

У мене є проект веб-сайту.

У моєму випадку я перемістив файл рішення на інший шлях і це спричинило проблему. Я відновив його до попереднього місця, і проблема вийшла.


1

Для будь-якого, хто все ще шукає, моє рішення полягало в тому, щоб видалити і бін, і папку obj, і перезапустити візуальну студію, здається, це виправить.


1

Через Visual Studio я опублікував службу WCF через FTP на зовнішній сервер. Він працював чудово як локально, так і при публікації на внутрішньому сервері, але не на зовнішньому. Рішенням було опублікувати без надання Site Path (іншими словами, опублікувати безпосередньо у корені віртуальної каталоги).

Я не впевнений, чому це спрацювало, оскільки я вже намагався перемістити файли до кореня через зовнішній FTP-клієнт - серед багатьох інших спроб, включаючи всі перелічені тут. Можливо, це було щось із профілем публікації, як це було для FabianVal . Але я зараз не в настрої тестуватись, тому що я поспішаю піднятися на швидкість після всіх днів, витрачених на цю проблему.


0

порада 1: очистіть і потім відновіть.

порада 2: просто закрийте VS та відкрийте знову.

порада 3: завантажений проект може знаходитися всередині іншої підпапки ... відкрийте папку, у якій є файли .net.

c: / demo1 / demo / (усі файли)

Вам слід відкрити демо від vs ... не demo1.


0

Я спробував кожне рішення вище, але жодне з них не працювало на мою проблему. (Я впевнений, що існує 1000 рішень цієї проблеми) Для мого сценарію я намагався опублікувати свій веб-сервіс WCF, який я мав на тестуванні у виробництві.

Однак я не зміг зрозуміти, що у виробництві ми є лише HTTPS, тобто ми перенаправляємо все на HTTPS. Як виявляється, я вказував на сервіс через HTTP замість HTTPS, тим самим спричиняючи помилку. Рішенням цього сценарію було просто змінити протокол адреси на HTTPS, а не на HTTP.

Я сподіваюсь, що це допоможе якійсь бідній душі намагатися вирішити цю проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.