Tentativa pelo método transparente de segurança 'WebMatrix.WebData.PreApplicationStartCode.Start ()'

176

Atualização: o mesmo para o mvc 4 ao mvc 5.

Iniciei um novo projeto do mvc 4 e migrei um projeto do mvc 3 (controladores / modelos / scripts etc.). Enquanto tudo compila agora, recebo o seguinte erro:

A tentativa do método transparente de segurança 'WebMatrix.WebData.PreApplicationStartCode.Start ()' para acessar o método crítico de segurança 'System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport (System.String)' falhou.

Não consigo encontrar nada na web com esse erro. O erro ocorre antes de entrar no início do aplicativo.

Tentei reinstalar todos os assemblies com nuget, colocando um web.config 'limpo' sem sucesso.

Alguém já teve esse problema antes?

Elger Mensonides
fonte

Respostas:

246

Para mim, esse erro ocorreu porque eu NÃO tinha o Microsoft.AspNet.WebHelpers instalado após a atualização do MVC 4 para o MVC 5. Foi corrigido instalando o pacote NuGet

Install-Package -Id  Microsoft.AspNet.WebHelpers
Michael
fonte
1
Isso resolveu o problema para mim; ele criou alguns problemas de espaço para nome com minha Resourcesclasse, mas eu mudei para Properties.Resources.xxxxxe os problemas foram corrigidos.
Cody
2
Eu corri isso e não funcionou ... mas viu então felizmente eu que em outra resposta, há um segundo comando para executar: stackoverflow.com/a/22587521/482256
Kevin Nelson
isso foi corrigido para mim, mas eu também precisei do seguinte em ligações de montagem code<dependentAssembly> <nome da assemblyIdentity = "WebMatrix.WebData" publicKeyToken = "31bf3856ad364e35" culture = "neutral" /> <bindingRedirect oldVersion = "0.0.0.0-3.0.0.0 "newVersion =" 3.0.0.0 "/> </dependentAssembly>code
Marchief 4/17
Eu instalo o pacote mencionado acima e o problema se foi. Eu costumava Nuget UI para instalá-lo e que também instalou todas as dependências para mim
Atta H.
204

Se você está recebendo o erro

A tentativa do método transparente de segurança 'WebMatrix.WebData.PreApplicationStartCode.Start ()' para acessar o método crítico de segurança 'System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport (System.String)' falhou.

Para corrigir isso, instale este pacote usando o gerenciador de pacotes NuGet.

Install-Package Microsoft.AspNet.WebHelpers

Depois disso, provavelmente você receberá outro erro

Não é possível carregar o assembly WebMatrix.Data versão 3.0.0.0

Para corrigir isso, instale este pacote usando o gerenciador de pacotes NuGet.

Install-Package Microsoft.AspNet.WebPages.Data
Anushka
fonte
Eu tive esse erro exato ao atualizar para o VS 2015 RTM. O mesmo código foi executado perfeitamente no VS 2013, a única diferença é um novo arquivo .config que 2015 gera para o IIS que eu suspeito que o IISExpress 2013 ignore. Esta resposta também corrigiu este caso, adicione as duas pepitas.
Angularsen
Deve-se mencionar que não tive êxito em executar meu site com o VS2015 RTM. A instalação do Microsoft.AspNet.WebHelpers corrigiu o YSOD, mas, em seguida, tive um tempo limite devido a alguns direitos de acesso sql. O mesmo código exato funcionou perfeitamente no VS2013.
angularsen 27/07/2015
1
Encontrei esse problema usando o VS 2013 Express Edition ao atualizar do ASP .NET MVC 4 para o ASP .NET MVC 5. Isso foi útil, pois a @Anushka disse o segundo problema com uma solução.
Jerameel Resco 9/09/15
Eu recebo esse erro quando tentei executar minha solução no VS 2015. Ele funciona perfeitamente no VS 2013. A instalação dos 2 pacotes, conforme sugerido, funciona, mas não sei ao certo por que preciso instalá-los. Eu tenho outras soluções que desenvolvi no VS 2013 que não recebem esse erro no VS 2015.
John81
2
Descobrimos que o VS2015 decide colocar algumas DLLs do WebMatrix no diretório bin do webapp na compilação - o VS2013 não faz isso. Não sei de onde 2015 está obtendo essas DLLs, mas elas devem ser uma versão diferente das DLLs carregadas no GAC (eu acho) quando você inicia o aplicativo que foi compilado pelo VS2013 sem as DLLS do WebMatrix explicitamente incluído no diretório da lixeira do aplicativo. Observe que, se você excluir os 4 arquivos WebMatrix da saída de 2015 e reiniciar o IIS, o problema desaparecerá.
Simon Green
14

Tentei todas as soluções acima e ainda assim não funcionou, até descobrir que o elemento de compilação web.config fazia referência à versão 2.0.0.0 de WebMatrix.Data e WebMatrix.WebData. Alterar a versão dessas entradas no web.config para 3.0.0.0 me ajudou.

Paulo
fonte
10

Estou enfrentando um problema semelhante ao atualizar mvc 4para mvc 5:

A tentativa do método transparente de segurança 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule ()' para acessar o método crítico de segurança 'System.Web.WebPages.ApplicationPart..ctor (System.Reflection.Assembly, System.String)' falhou.

A caixa de seleção excluir arquivos extras na caixa de diálogo de publicação resolveu isso para mim.

Edward Olamisan
fonte
Eu tive esse erro no meu aplicativo hospedado pelo provedor do SharePoint 2013 (ASP.NET MVC 5, implantado no Azure), "excluir arquivos adicionais" na caixa de diálogo de publicação também o solucionou.
Anatoly Mironov
8

Reinstalar Microsoft.AspNet.WebHelpersfunciona para mim

Update-Package reinstall Microsoft.AspNet.WebHelpers
Pablo Claus
fonte
6

Apenas mais uma sugestão ... Isso foi causado por algumas DLLs antigas de um projeto MVC 3 após a atualização para o MVC 5 na pasta bin do site no servidor de implantação. Mesmo que essas DLLs não fossem mais usadas pela base de código, elas pareciam estar causando o problema. Limpou tudo e reimplantou e estava tudo bem.

chris
fonte
Esta foi a razão do meu erro. Eu estava tendo arquivos antigos e novos na pasta bin. obrigado
Abhinaw Sharma
5

Você também pode obter:

Não foi possível carregar o arquivo ou assembly 'WebMatrix.Data, Versão = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' ou uma de suas dependências. A definição de manifesto da montagem localizada não corresponde à referência da montagem. (Exceção de HRESULT: 0x80131040)

Isso foi movido para este pacote

 Install-Package Microsoft.AspNet.WebPages.Data

Você provavelmente deve fazer uma compilação limpa antes de tentar qualquer uma das respostas a esta pergunta e depois de atualizar os pacotes

Simon_Weaver
fonte
3

Aqui está como eu corrigi esse problema:

Abra o console do gerenciador de pacotes nuget e instale os pacotes nuget abaixo:

Install-Package WebMatrix.Data
Install-Package Microsoft.AspNet.WebHelpers
Update-Package

Limpe a solução, reconstrua e meu aplicativo da web asp.net começa a funcionar!

Mostafa
fonte
2

A exclusão de todos os arquivos da lixeira e a reconstrução da solução funcionaram para mim.

theskhan
fonte
1

Para mim, esse erro foi causado por o DotNetOpenAuth não ser compatível com o MVC5 após a atualização do MVC4 para o MVC5. A desinstalação do Microsoft.Web.WebPages.OAuth corrigiu o problema.

Dean North
fonte
1

Eu o removi de minhas referências.Em seguida, execute isso no Package Manager Console

Install-Package WebMatrix.Data

Finalmente, adicione o assembly WebMatrix.WebData às referências e reconstrua o projeto. Ele funciona para mim. Espero que ele também resolva o seu problema.

Ali Golgol
fonte
0

Instalei o webapi através do pacote nuget das páginas de ajuda. Esse pacote substituiu a maioria dos binários do asp.net mvc 4 por versões beta que não funcionavam bem em conjunto com o restante do projeto. Correção foi para restaurar o original mvc 4 dll e tudo estava bem.

Elger Mensonides
fonte
0

Eu tive o mesmo problema, tive que atualizar o MVC Future (Microsoft.AspNet.Mvc.Futures)

Install-Package Microsoft.AspNet.Mvc.Futures
PvtVandals
fonte
0

Para mim, esses erros foram resolvidos adicionando

<system.web>
 <trust level="Full">
 </system.web>

no web.config

Omar Kamel
fonte