É um erro usar uma seção registrada como allowDefinition = 'MachineToApplication' além do nível do aplicativo.
A linha superior em todas as minhas páginas aspx no meu diretório / portal / tem essa mensagem de erro e sei que é comum. Pesquisei essa mensagem de erro no Google sem fim e vejo muitas postagens dizendo para configurar a pasta / portal / como um aplicativo no IIS (que eu tenho) e mais postagens dizendo que aninhei web.configs (mas nenhuma das publicações oferece orientação para uma solução).
Minha configuração é que eu tenho um web.config no meu diretório raiz e estou tentando criar um portal da empresa, no diretório / portal /. O diretório / portal / possui seu próprio web.config (necessário).
Minha linha 50 do web.config é assim:
<customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/>
<anonymousIdentification enabled="true"/>
<authentication mode="Forms"/>
<membership defaultProvider="MyProvider">
Então, eu tenho domain.com/web.config AND domain.com/portal/web.config ... para que minha página domain.com/portal/default.aspx não seja carregada.
Qual é a verdadeira solução para isso? De alguma forma, encontro uma maneira de mesclar meu web.config raiz com meu / portal / diretório web.config ou estou muito longe daqui?
Qualquer orientação será imensamente apreciada!
fonte
Respostas:
Apenas para informações básicas; As informações de configuração para um site ASP.NET são definidas em um ou mais arquivos Web.config. As definições de configuração são aplicadas de maneira hierárquica. Há um arquivo Web.config "global" que explica as informações de configuração da linha de base para todos os sites no servidor da Web; esse arquivo está na
%WINDIR%\Microsoft.Net\Framework\version\CONFIG
pasta Você também pode ter um arquivo Web.config na pasta raiz do seu site. Esse arquivo Web.config pode substituir as configurações definidas no arquivo "global" Web.config ou adicionar novas. Além disso, você pode ter arquivos Web.config nas subpastas do seu site, que definem novas definições de configuração ou substituem as definições definidas nos arquivos Web.config mais acima na hierarquia.Certos elementos de configuração no Web.config não podem ser definidos além do nível do aplicativo, o que significa que eles devem ser definidos no arquivo Web.config "global" ou no arquivo Web.config na pasta raiz do site. O
<authentication>
elemento é um exemplo. A mensagem de erro acima indica que há um arquivo Web.config em uma das subpastas do site que possui um desses elementos de configuração que não podem ser definidos além do nível do aplicativo.Fonte: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
Você identificou corretamente as 2 abordagens possíveis.
1 - Dependendo do conteúdo do seu segundo web.config e se sua configuração permitir (ou seja, o mesmo método de autenticação) - adicione as
<authentication>
configurações e quaisquer outros elementos que devem ser definidos globalmente no web.config superior2 - Se você não conseguir mesclar o conteúdo do web.config, poderá transformar a subpasta em um aplicativo da web no IIS seguindo as etapas contidas neste link arquivado abaixo. O link original não está mais funcionando. (veja arquivado ) Espero que ajude.
fonte
Pelo que vale, recebi o erro: "É um erro usar uma seção registrada como allowDefinition = 'MachineToApplication' além do nível do aplicativo." e acabou resolvendo-o limpando os diretórios \ myWebApp \ obj \ Debug e \ myWebApp \ obj \ Release. Eu também precisava definir uma página de inicialização padrão. Mas, então, o aplicativo foi iniciado corretamente. HTH.
fonte
Como RY4N diz acima, não é necessariamente o web.config na pasta Projeto que causa o problema. Em alguns casos, descobri que a execução de uma compilação no perfil Debug deixará para trás detritos na pasta Debug no projeto em questão. Geralmente, há um arquivo web.config aqui que leva ao erro acima quando você executa uma compilação subseqüentemente no perfil Release.
A solução que funciona para mim aqui é excluir a pasta Debug inteira que as compilações anteriores criaram no diretório do projeto.
fonte
Isso também estava acontecendo no meu computador doméstico, mas SOMENTE quando eu habilitei Build Views na configuração da versão E criei uma configuração da versão. Caso contrário, não aconteceu.
Embora a opção Build Views seja muito boa, acabei desativando-a, porque esse "erro" sempre aparecia e me deixava incapaz de executar o aplicativo.
fonte
Só para dizer
Se você atualizar (por exemplo, 2008 -> 2010) Um projeto do Visual Studio criará um backup (se você permitir) na solução do projeto que é adicionada à nova solução. O antigo Webconfig é onde o erro apontado acima pode emanar de .
" Arquivo Web.config em uma das subpastas do site que possui um desses elementos de configuração que não podem ser definidos além do nível do aplicativo. " @Benni_mac_b
Para corrigi-lo: basta remover a pasta de backup do projeto e da solução, neste cenário.
fonte
Eu inventei outra razão possível para que isso ocorra.
Eu tinha um aplicativo Web mais antigo construído em 2.0. Eu migrei para uma solução 4.5.
O aplicativo foi criado e depurado muito bem quando estava dentro do Visual Studio, mas quando tentei publicar o aplicativo Web, esse erro ocorreu repetidamente.
Finalmente descobri que o problema era que a Ação de Compilação para o arquivo web.config era "Recurso Incorporado" em vez de "Conteúdo". Além disso, o diretório Copiar para saída foi definido como "Sempre copiar" em vez de "Não copiar". Não sei quando essas configurações foram feitas, mas acredito que estava de volta à versão 2.0 do aplicativo.
A modificação das configurações do arquivo web.config permitiu que a ação Publicar na publicação do Visual Studio 2012 funcionasse perfeitamente.
fonte
Eu tive o mesmo problema em um projeto MVC. O erro ocorreu quando tentei publicar. A pasta obj deve estar vazia (ou pelo menos não conter nenhuma
web.config
).Correr
Clean
não funcionou para mim.Resolvi o problema limpando a
obj
pasta antes de qualquer compilação (a construção do projeto não levará tanto tempo no meu caso).Descarreguei o projeto e adicionei o seguinte ao destino BeforeBuild
Espero que isto ajude
fonte
"É um erro usar uma seção registrada como allowDefinition = 'MachineToApplication' além do nível do aplicativo. Este erro pode ser causado por um diretório virtual não estar configurado como um aplicativo no IIS."
Eu tive esse problema no VS.NET. Aconteceu que quando eu estava configurando algumas transformações de configuração, defini por engano a propriedade do arquivo Web.config "Copiar sempre". Normalmente, defino meus arquivos de transformação como "Copiar sempre", mas deixo o arquivo raiz web.config como "Não copiar".
Cuidado, pois alterar as propriedades do web.config também altera todas as transformações aninhadas.
Então, para corrigir:
1) Altere web.config para "Não copiar"
2) Opcionalmente, se você estiver usando transformações de configuração, defina-as como "Copiar sempre"
3) Exclua as pastas obj e bin da solução (elas podem não estar visíveis; portanto, selecione o nó do projeto no Solution Explorer e clique no botão "Mostrar todos os arquivos" da barra de ferramentas.
4) Publicar
Trabalhou para mim.
fonte
Eu experimentei esse erro apenas durante a publicação do aplicativo.
As propriedades dos arquivos web.config (e transformações) foram definidas como:
Build Action - None
Copy to Output - Always
.A solução foi alterar as configurações para:
Build Action - Content
Copy to Output - Do not Copy
fonte
Também tive esse problema e surgiu depois que usei o Assistente de publicação para publicar meu site na Web.
Depois de muita pesquisa, deparei-me com este relatório de bug no site do Connect, https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level
Um representante da MS respondeu e, além de explicar por que esse problema ocorreu ao publicar, ele também incluiu uma solução temporária que corrigiu o problema para mim.
fonte
Exclua e crie o diretório virtual novamente. Clique com o botão direito e converta o diretório virtual em " Aplicativo "
fonte
Clique no
Web.config
arquivo do Solution Explorer e clique com o botão direito do mouse em "Propriedades" e mude para "Copiar para o diretório de saída: Não copie".fonte
Para mim, o motivo foi que a pasta obj estava na pasta do site e vários web.config apareceram após a criação de configurações diferentes. Resolvi o problema no vs2012 movendo a pasta obj para fora do site. Para fazer isso, adicionei manualmente (no bloco de notas) $ (SolutionDir) \ Obj \ $ (Configuration) a todas as configurações no arquivo de projeto do site.
fonte
Eu estava tendo o mesmo problema quando publicava o site, se eu construí-lo, não tenho problemas, mas durante a publicação, recebo este erro terrível:
Eu tentei tudo o que foi declarado aqui neste post sem nenhum recurso. O que funcionou para mim foi apenas criar um novo perfil de publicação exatamente igual ao que eu estou usando e que funciona bem, não receba o erro com o novo perfil, mas faça com o antigo. Não tenho certeza qual é a diferença, mas pelo menos posso publicar meu projeto MVC.
Espero que isso ajude alguém !!
fonte
Aqui está outro motivo: se você copiar todo o seu aplicativo Web em uma de suas próprias subpastas, você receberá esse erro. Eu consegui fazer isso em um site antigo ao copiar de uma máquina para outra - fui solicitado a olhar para o site após um intervalo de cerca de 2 anos e ocorreu o erro. Demorou um pouco para descobrir - como eu não tinha vários arquivos de configuração.
fonte
Eu tive esse problema e resolvi limpando minha solução de montagens antigas etc.
de vs: Build> Solução Limpa
depois reconstrua.
fonte
O Windows inicia -> abra Sites -> IIS -> clique com o botão direito do mouse em seu site -> Gerenciar Site -> Configuração Avançada -> procure Caminho Físico -> tente selecionar a subpasta da seleção atual.
a lógica é que o arquivo de configuração da web dentro da subpasta está tentando fazer alterações e isso não é permitido, deve ser a pasta selecionada: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
fonte
Também recebo esse erro ao tentar implantar um subsite no site.
A solução é:
<authentication mode="None" />
Se houver outro problema, não hesite em me enviar um ping, talvez eu encontre ajuda.
fonte
Recebi esse erro no localhost no Visual Studio 2017 e uma simples reinicialização do Visual Studio resolveu o problema.
Sei que esse problema também pode ser causado por ter mais de um web.config; um dentro de uma subpasta, por exemplo. se você tiver vários arquivos web.config intencionalmente para outro aplicativo: verifique se o diretório não está sendo visto como um diretório virtual.
fonte
Certifique-se de não cair na armadilha de acessar o site local errado via localchost / mysite.test, que deve ser mysite.test, o que causará esse erro.
Quando você acessa seu site como localhost / dir_name, nesse caso, o seu web.conf fica abaixo do nível da raiz e, portanto, esse erro.
fonte
Eu estava migrando aplicativos e o aplicativo tinha vários aplicativos (vários web.configs) dentro dele. O que fiz foi acessar o IIS e clicar com o botão direito do mouse nas subpastas, depois em "Converter em aplicativo" e funcionou.
fonte
Eu recebi esse erro de forma diferente de todos os outros:
Eu estava migrando do vs2010 com projeto de implantação da web para o vs2012 e um novo perfil de publicação na web.
Criei um novo projeto de publicação na web no vs2012 para publicar no sistema de arquivos (temos um construtor de instalador separado, este é um aplicativo comercial) e estava publicando em uma pasta que estava dentro do projeto da web existente, que está vinculado ao IIS.
Isso causou o erro durante a publicação, o que me intrigou a princípio porque estava publicando no sistema de arquivos, não no IIS (pensei).
A solução foi alterar a publicação para a pasta para fora do projeto da web.
fonte
Foi bom,
localhost
mas quando publiquei uma versão no servidor, iniciei o mesmo erro em poucas páginas. Depois limpei a solução e reconstruí-a e publiquei, as coisas foram corrigidas.fonte
Às vezes, a resposta simples é a melhor. Eu tinha dois arquivos web.config no meu projeto. Aquele no nível principal é onde eu precisava fazer a alteração para lidar com o tempo limite da minha sessão (o que desencadeou esse problema). Eu tinha um arquivo de configuração separado no diretório Razor Views, que tinha configurações para o Razor e suas visualizações. Eu estava adicionando uma seção lá (não no nível do aplicativo!). Sem perceber, eu tinha dois arquivos web.config separados, tentei de tudo, exceto procurando o óbvio.
fonte
meu erro foi acidentalmente copiar colando um web.config dentro de outra pasta no servidor web
fonte
Eu recebi esse erro quando esqueci de converter o projeto publicado em um aplicativo no IIS.
fonte