Não foi possível carregar o arquivo ou assembly 'System.Web.Mvc'

200

Meu novo aplicativo Web ASP.NET MVC funciona na minha estação de trabalho de desenvolvimento, mas não é executado no meu servidor web ...


Erro de Servidor na '/' Aplicação.


Erro de configuração

Descrição: ocorreu um erro durante o processamento de um arquivo de configuração necessário para atender a essa solicitação. Revise os detalhes específicos do erro abaixo e modifique seu arquivo de configuração adequadamente.

Mensagem de erro do analisador: Não foi possível carregar o arquivo ou assembly 'System.Web.Mvc, versão = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' ou uma de suas dependências. O sistema não pode encontrar o arquivo especificado.

Erro de origem:

Line 44:         <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 45:         <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 46:         <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 47:         <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Line 48:         <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

Arquivo de origem: C: \ inetpub \ www.example.org \ web.config Linha: 46

Rastreio de Carregamento de Montagem: As informações a seguir podem ser úteis para determinar por que o assembly 'System.Web.Mvc, Versão = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' não pôde ser carregado.

WRN: O log de ligação da montagem está desativado.
Para habilitar o log de falha de ligação de montagem, defina o valor do Registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) como 1.
Nota: Há alguma penalidade de desempenho associada ao log de falha de ligação de montagem.
Para desativar esse recurso, remova o valor do registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Informações sobre versão: Versão do Microsoft .NET Framework: 2.0.50727.3053; Versão do ASP.NET: 2.0.50727.3053


Preciso instalar o AspNetMVCBeta-setup.msi no servidor? Ou existe um instalador diferente para servidores?

insira a descrição da imagem aqui

Zack Peterson
fonte

Respostas:

215

Acabei de escrever uma postagem no blog abordando isso. Você pode instalar o ASP.NET MVC no seu servidor OU pode seguir as etapas aqui .


EDIT: (por jcolebrand) Passei por este link, depois tive o mesmo problema que Victor abaixo , então sugiro que você adicione também:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor
Haacked
fonte
6
Nota: Quando você tiver o MVC4 (beta atualmente) instalado, deseje obter a v1.0 dessas DLLs, também desejará obter System.Web.Helpers (pelo menos eu precisava).
precisa
1
-1 A sua postagem à qual você vincula não explica como obter o Microsoft.Web.Infrastructure no servidor da web por meio do mecanismo de publicação. Ter que instalar as coisas diretamente em um servidor, tipo de sux.
Mark Rogers
1
com o visual studio 2010 isso ficou muito mais fácil, conforme explicado aqui: britishdeveloper.co.uk/2011/06/…
Daniël Tulp
ou aqui, se você não estiver usando o Web Deploy britishdeveloper.co.uk/2011/05/…
Jeroen K
Tive que manobrar a pasta bin e publicar novamente, ou seja, se você não estiver usando o Deploy Package.
Robert Koch
41

Encontrei o mesmo problema que o sgriffinusa. Além das referências, o artigo de Phil sugere: http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx . Eu adicionei estes:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

O Godaddy Deployment funcionou perfeitamente. Desative os erros personalizados e adicione referências para corrigir os erros. Isso deve levá-lo na direção certa.

Victor Juri
fonte
26

Instalar o MVC diretamente no servidor da Web é uma opção, pois os assemblies serão instalados no GAC. Você também pode implantar em bin os assemblies, o que pode ajudar a manter seu servidor livre de assemblies de pré-lançamento até que um release final esteja disponível.

Phil Haack publicou um bom artigo há alguns dias sobre como implantar o MVC junto com seu aplicativo, portanto, não é necessário instalar diretamente:

http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx

Matt Rudder
fonte
25

Corri para o mesmo problema tentando implantar meu aplicativo Web MVC3 Razor na hospedagem compartilhada GoDaddy. Existem alguns .dlls adicionais que precisam ser referenciados. Detalhes aqui: http://paulmason.biz/?p=108

Basicamente, você precisa adicionar referências ao seguinte, além das listadas na postagem do @ Haacked, e configurá-las para implantar localmente, conforme descrito.

  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor
sgriffinusa
fonte
Obrigado cara, depois de adicionar manualmente a referência e depois implantá-los localmente, ele corrigiu o problema para o MVC3!
Stefanvds
Mesma coisa aqui. Boas orientações sobre como adicionar essas DLLs adicionais. Obrigado!
Mike L
Mesma coisa aqui. Não no GoDaddy, mas no servidor da minha empresa, portanto esse deve ser um mero caso genérico.
TJKjaer
13

No VS2010, clique com o botão direito do mouse no projeto no Solution Explorer e selecione 'Add Deployable Dependencies'. Em seguida, marque as caixas de seleção relacionadas ao MVC na caixa de diálogo a seguir.

Isso cria uma pasta '_bin_deployableAssemblies' no projeto que contém todos os arquivos .dll mencionados em outras respostas. Eu acredito que estes são copiados para a pasta bin ao criar um pacote de implantação.

Warrickh
fonte
9

Correção simples. No VS2010, clique com o botão direito do mouse no seu projeto MVC, selecione "Adicionar dependências implementáveis ​​...", selecione as opções desejadas e clique em OK

Eixo
fonte
8

Solução rápida e simples: enfrentei esse problema com o Microsoft.AspNet.Mvc -Version 5.2.3 e, depois de passar por todos esses tópicos, encontrei uma solução mais simples.

Basta seguir os passos:

  1. Abra o NuGet Package Manager no Visual studio para seu projeto
  2. Procure por Microsoft.AspNet.Mvc
  3. Quando encontrado, altere a ação para Desinstalar e Desinstalar
  4. Quando terminar, instale-o novamente e tente agora

Isso corrigirá automaticamente todos os problemas com referências. Veja a imagem abaixo:

insira a descrição da imagem aqui

Muhammad Amir
fonte
7

Teve o mesmo problema e adicionou toda a montagem que eles disseram, mas ainda obteve o mesmo erro.

Acontece que você precisa criar a " Versão específica " = Falso.

Versão específica deve ser falsa.

Romeo
fonte
Como alternativa, você deve alternar 'Copy Local' para 'True' se não estiver ativado,
AStopher
6

Queremos adicioná-lo porque estamos criando uma biblioteca de classes que o utiliza.

Para mim é aqui ...

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

Dave Shinkle
fonte
3

Se você NÃO estiver usando um provedor de hospedagem e tiver acesso ao servidor para instalar ... Em seguida, instale as ferramentas de atualização do MVC 3, faça isso ... você economizará horas de problemas em um servidor Windows 2003 / máquina IIS6. , Comentei nesta página aqui incompatibilidade de número de versão do Nuget.Core.dll

Tom Stickel
fonte
3

Além do post de Haack, Hanselman também tem um post semelhante. BIN Implantando o ASP.NET MVC 3 com Razor em um Windows Server sem o MVC instalado

Para mim, a solução "Copiar local = verdadeiro" era insuficiente porque as referências de projeto do meu site não incluíam todas as dlls ausentes. Como Scott menciona em sua postagem, eu também precisava obter dlls adicionais da seguinte pasta na minha caixa de desenvolvimento: C: \ Arquivos de Programas (x86) \ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies. A mensagem de erro me informou qual dll estava faltando (System.Web.Infrastructure, System.Web.Razor, etc.) Continuei adicionando cada dll ausente, uma por uma, até que funcionasse.

James Lawruk
fonte
3

Eu fiz um "Pacote de atualização - reinstale o Microsoft.AspNet.Mvc" para corrigi-lo no Visual Studio 2015.

Olaj
fonte
3

Uma consideração importante é o arquivo web.config. Alguns pacotes podem alterar seus redirecionamentos de ligação, causando estragos (o pacote nocivo estava no pacote interno que eu não removi o web.config do pacote ou certificando-se de que o web.config esteja no pacote não possui redirecionamentos de ligação. Por exemplo, remover o nó duplicado e incorreto resolve esse problema

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>


                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>


                <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

removendo as linhas 8 a 24 corrige a compilação.

PBo
fonte
2

Verifique também a versão do assembly no web.config dentro da pasta Views e verifique se ele corresponde. Às vezes esqueço que existe um segundo web.config nesse local.

Dave
fonte
2

Eu tive o mesmo problema com vários arquivos de montagem depois de mover o projeto para outra solução.

Para mim, o web.configarquivo estava tentando adicionar este assembly:

<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Pensei que a referência no projeto estava apontando para a versão 3.0.0.0(clique na referência e role até a parte inferior das propriedades). Por isso, acabei de alterar a versão de referência no web.configarquivo.

Não sei se isso foi apenas um bug de algum tipo. O problema de adicionar todas as outras referências foi que as referências apareceram no arquivo de configuração, mas na verdade não foram referenciadas no projeto (dentro do Solution Explorer) e os arquivos necessários não foram copiados com o restante dos arquivos do projeto, provavelmente devido a não estar"copy local = true"

Agora, não consegui encontrar esses assemblies nos assemblies adicionáveis ​​(clicando com o botão direito do mouse na referência e tentando adicioná-los dos assemblies ou extensões). Em vez disso, criei uma nova solução MVC que adicionou todos os assemblies e referências que eu precisava, encontrando-os sob as novas referências de projetos no explorador de soluções e encontrando seu caminho na janela de propriedades da referência.

Depois, copiei as bibliotecas necessárias para o outro projeto e as referenciei.

Mikael Puusaari
fonte
1

Depois de tentar de tudo e ainda assim falhar, esta foi a minha solução: lembrei-me de que tinha e erro a última atualização da versão do MVC no meu Visual Studio, para executar o projeto em outro Visual Studio (computador diferente) e depois carregar as dll-s e funcionou. talvez ajude alguém ...

Matan L
fonte
0

Estou usando o Jenkins em projetos .net e tive problemas com as referências do MVC 4.

Finalmente, resolvi meu problema usando uma funcionalidade do mecanismo de pesquisa de referência .Net baseada no registro usando:

"HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v2.0.50727 \ AssemblyFoldersEx"

Você pode criar a subchave e definir a chave padrão como "c: \ myreferenceedir", por exemplo.

Ele me salvou com versões do MVC e também com páginas da Web ASP.net.

Útil para adicionar referências ao "Add Reference Dialog"

http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-assembly-in-gac-and-make-it-show-in-add-reference-dialog/

Jenzo
fonte
0

Como outros já mencionaram, adicione essas referências aos estúdios visuais com Copy Localset true. (Eu também tive que adicionar System.Web.Webpages)

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages
roo2
fonte
0

Eu adicionei "Microsoft ASP.NET Razor" usando Gerenciar pacotes NuGet.

Com Add References, por algum motivo, eu só tinha System.Web.Helpers 1.0.0 e 2.0.0 ... mas não 3.0.0.

Outra opção que funcionou para mim foi excluir as referências a System.Web.Mvc e System.Web.Http ... e adicioná-las novamente aos locais dos pacotes no arquivo csproj (você pode editar o projeto com mais facilidade um editor de texto):

<Reference Include="System.Web.Http">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>

<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
Brian Rice
fonte