зарегистрирован раздел как MachineToApplication allowDefinition='' вне уровня приложения

после добавления assebly системы.Данные.Entity to my web config я получил эту ошибку: Использование раздела, зарегистрированного как allowDefinition='MachineToApplication' за пределами уровня приложения, является ошибкой. Эта ошибка может быть вызвана виртуального каталога не настроен в IIS как приложение.

Я удалил папки obj и bin, я удалил строку authentication="windows", попытался снова открыть, поскольку некоторые сказали, что это сработало, я проверил, что есть только 1 web.конфиг в основной папке (Entity Framework-папка для форм, моделей, DAL и BLL)...

какие еще причины есть, что это произойдет? Я искал везде, и это в основном вышеуказанные причины, которые я нашел....

Это моя паутина.config, если это имеет значение:

    <configuration>
  <connectionStrings>
    <add name="ApplicationServices"
     connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
     providerName="System.Data.SqlClient" />
    <add name="CStringVKB" connectionString="Data Source=.;Initial Catalog=VKB;Persist Security Info=True;User ID=websiteservice;Password=websiteservice" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
    <compilation debug="true" optimizeCompilations="true" targetFramework="4.0" >
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <!--<authentication mode="Windows">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>-->
     <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
      </providers>
    </membership>
    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>
   <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>
  </system.web>
  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

что я могу сделать, чтобы решить эту проблему?

4 ответов


в основном, ошибка означает, что есть веб.конфигурационный файл в одной из ваших вложенных папок, которая имеет элемент конфигурации, который он не должен иметь. Это вы root / только файл веб-конфигурации? Если нет,не могли бы вы также отправить их?

кроме того, это звучит глупо, но я бы дважды проверил, что вы открываете сам сайт в своей IDE (и не ошибочно открываете родительскую папку), я видел, как люди проводят пару часов, пытаясь отладить эту же ошибку, когда все время они не в том каталоге.

вот хорошее объяснение о том, как в интернете.иерархия конфигурации настроена для ASP, которая поможет вам визуализировать, как это работает:http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx


по-видимому, было две паутины.config в моем решении. Я использую MVC4, и под представлениями был другой конфигурационный файл, и я вносил изменения в неправильный файл. Исправлена помог мне.

но вы всегда можете изменить перенаправление/маршрут по умолчанию в глобальном.файл asax.


эта проблема чаще всего возникает при открытии веб-сайта в Visual Studio, но случайно открыть родительскую корневую папку. Например, представьте, что у вас сайт расположен по C:\MyProjects\Website1 папка website1 это корень сайта. При открытии этого веб - сайта из Visual Studio вас попросят указать корневую папку веб-сайта-необходимо выбрать папку Website1. Если вы случайно выбрали папку MyProjects, то веб.конфигурационный файл в папке Website1 теперь находится в одной из подпапок веб-сайта. Потому что эта паутина.файл конфигурации включает в себя элемент, среди других параметров уровня приложения, вы получите вышеуказанную ошибку.

исправление этой ошибки (в большинстве случаев) заключается в том, чтобы закрыть проект и снова открыть его из Visual Studio, убедившись, что вы выбрали соответствующую папку.

Счастливого Программирования!


Крис Noreikis является на самом деле правильным. Но упущена важная деталь. Если по какой-либо причине вы откроете проект/решение в другой версии VS, чем она была первоначально создана, VS попытается выполнить миграцию. Иногда во время этой миграции VS создает папку под названием "backup" или "backup_{#}". Даже если вы отмените ожидающие изменения эта миграция заставляет, эти каталоги остаются.

наличие этих каталогов в некоторых случаях (например mine) причина этой ошибки. Удаление этих каталогов устранит проблему.

Я надеюсь, что это спасет кого-то бесчисленные часы, которые я потерял на этой проблеме.