web-dev-qa-db-fra.com

une section enregistrée comme allowDefinition = 'MachineToApplication' au-delà du niveau de l'application

Après avoir ajouté le contenu de System.Data.Entity à ma configuration Web, le message d'erreur suivant s'affiche: Cette erreur peut être causée par le fait qu'un répertoire virtuel n'est pas configuré en tant qu'application dans IIS. 

J'ai supprimé les dossiers obj et bin, j'ai supprimé la ligne authentication = "windows", j'ai essayé de rouvrir car certains ont déclaré que cela fonctionnait. formulaires, modèle, DAL et BLL) ... 

Quelles sont les autres raisons pour que cela se produise? J'ai cherché partout et c'est essentiellement les raisons ci-dessus que j'ai trouvées ....

Ceci est mon web.config si cela fait une différence:

    <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>

Que puis-je faire pour résoudre ce problème?

8
Kerieks

En gros, l'erreur signifie qu'il y a un fichier web.config dans l'un de vos sous-dossiers avec un élément de configuration qu'il ne devrait pas avoir. S'agit-il du fichier de configuration racine/uniquement Web? Si non, pourriez-vous s'il vous plaît les poster aussi?

Cela semble aussi stupide, mais je vérifierais que vous ouvrez le site Web lui-même dans votre IDE (sans ouvrir par erreur un dossier parent). J'ai vu des personnes passer quelques heures à essayer de déboguer cette même erreur, quand tout le temps ils n'étaient pas dans le bon répertoire.

Voici une bonne explication sur la configuration de la hiérarchie web.config pour ASP, qui vous aidera à visualiser son fonctionnement: http://scottonwriting.net/sowblog/archive/2010/02/17/ 163375.aspx

23
Chris Noreikis

Apparemment, ma solution contenait deux fichiers web.config. J'utilise MVC4 et il y avait un autre fichier de configuration sous Views et je faisais la modification dans le mauvais fichier. Fixé il m'a aidé. 

Mais vous pouvez toujours changer la redirection/route par défaut dans le fichier global.asax.

1
Gautam Beri

La réponse de Chris Noreikis est en fait correcte. Mais manque un détail important. Si, pour une raison quelconque, vous ouvrez le projet/la solution dans une version de VS différente de celle qui a été créée, VS tentera de migrer. Parfois, au cours de cette migration, VS créera un dossier appelé "sauvegarde" ou "sauvegarde _ {#}". Même si vous annulez les modifications en attente imposées par cette migration, ces répertoires restent.

La présence de ces répertoires est dans certains cas (comme le mien) la cause de cette erreur. La suppression de ces répertoires éliminera le problème. 

J'espère que cela épargnera à quelqu'un les innombrables heures que j'ai perdues avec ce problème.

0
pimbrouwers