首页 文章

无法加载文件或程序集'System.Web.Mvc'

提问于
浏览
195

我的新ASP.NET MVC Web应用程序可以在我的开发工作站上运行,但不能在我的Web服务器上运行...


'/'应用程序中的

服务器错误 .


配置错误

Description: 处理为此请求提供服务所需的配置文件时发生错误 . 请查看下面的具体错误详细信息并相应地修改配置文件 .

Parser Error Message: 无法加载文件或程序集'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'或其依赖项之一 . 该系统找不到指定的文件 .

Source Error:

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

Source File: C:\ inetpub \ www.example.org \ web.config Line: 46

Assembly Load Trace: 以下信息有助于确定无法装入程序集'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'的原因 .

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Version Information: Microsoft .NET Framework版本:2.0.50727.3053; ASP.NET版本:2.0.50727.3053


我是否需要在服务器上安装AspNetMVCBeta-setup.msi?或者是否有不同的服务器安装程序?

enter image description here

20 回答

  • 3

    除了Haack帖子,Hanselman也有类似的帖子 . BIN Delploying ASP.NET MVC 3 with Razor to a Windows Server without MVC installed

    对我来说,“复制本地=真”解决方案是不够的,因为我的网站的项目参考不包括所有丢失的dll . 正如Scott在他的帖子中提到的,我还需要从我的开发盒上的以下文件夹中获取额外的dll:C:\ Program Files(x86)\ MicrosoftASP.NET \ ASP.NET网页\ v1.0 \ Assemblies . 错误消息告诉我哪个DLL丢失了(System.Web.Infrastructure,System.Web.Razor等)我继续逐个添加每个丢失的dll,直到它工作 .

  • 2

    我已经做了一个“Update-Package -reinstall Microsoft.AspNet.Mvc”来修复它在Visual Studio 2015中 .

  • 0

    还要检查 Views folder 中web.config中的程序集版本,并确保它匹配 . 我有时会忘记该位置有第二个web.config .

  • 2
  • 213

    我刚写了一篇博文来解决这个问题 . 您可以在服务器上安装ASP.NET MVC,也可以按照steps here进行操作 .


    EDIT: (由jcolebrand)我经历了这个链接,然后和Victor below有同样的问题,所以我建议你也添加这些:

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

    我和sgriffinusa遇到了同样的问题 . 除了Phil的文章建议的参考文献:http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx . 我添加了这些:

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

    Godaddy部署工作完美 . 关闭自定义错误并添加引用以更正错误 . 这应该引导你朝着正确的方向前进 .

  • 0

    直接在Web服务器上安装MVC是一种选择,因为程序集将安装在GAC中 . 您还可以对程序集进行bin部署,这可能有助于使服务器远离预发布程序集,直到最终发行版可用 .

    Phil Haack几天前发布了一篇关于如何将MVC与您的应用程序一起部署的好文章,因此没有必要直接安装:

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

  • 9

    我试图在GoDaddy共享主机上部署我的MVC3 Razor Web应用程序时遇到了同样的问题 . 还有一些需要引用的附加.dll . 详情:http://paulmason.biz/?p=108

    基本上除了@Hacked的帖子中列出的内容之外,您还需要添加对以下内容的引用,并将它们设置为按照描述在本地部署 .

    • Microsoft.Web.Infrastructure

    • System.Web.Razor

    • System.Web.WebPages.Deployment

    • System.Web.WebPages.Razor

  • 0

    在VS2010中,右键单击Solution Explorer中的项目,然后选择“Add Deployable Dependencies” . 然后在以下对话框中检查MVC相关的复选框 .

    这将在项目中创建一个“_bin_deployableAssemblies”文件夹,其中包含其他答案中提到的所有.dll文件 . 我相信在创建部署包时会将这些文件复制到bin文件夹中 .

  • 5

    简单的修复 . 在VS2010中,右键单击MVC项目,选择“Add Deployable Dependencies ...”,选择所需的选项,然后单击“确定” .

  • 6

    我们想要添加它,因为我们正在创建一个使用它的类库 .

    对我来说就是......

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

  • 0

    有同样的问题,并添加了他们说的所有组件,但仍然有同样的错误 .

    结果你需要使“ Specific Version ”= False .

    Specific version should be false.

  • 26

    Quick & Simple Solution: 我遇到了Microsoft.AspNet.Mvc -Version 5.2.3的这个问题,经过所有这些线程后,我发现了一个最简单的解决方案 .

    只需按照步骤操作

    • 在Visual Studio中为您的项目打开NuGet包管理器

    • 搜索Microsoft.AspNet.Mvc

    • 找到后,将操作更改为卸载并卸载它

    • 完成后,再次安装并立即尝试

    这将自动修复引用的所有问题 . 见下图:

    enter image description here

  • 2

    如果您的NOT使用托管服务提供商,并且您可以访问服务器进行安装......那么安装MVC 3更新工具,这样做......它将在Windows 2003服务器/ IIS6计算机上节省数小时的问题 . ,我在这里评论了这个页面Nuget.Core.dll version number mismatch

  • 41

    将项目移动到另一个解决方案后,我遇到了一堆程序集文件的问题 .

    对我来说, web.config 文件试图添加这个程序集:

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

    认为项目中的引用指向版本 3.0.0.0 (单击引用并滚动到属性的底部) . 因此我刚刚更改了 web.config 文件中的参考版本 .

    我不知道这只是某种错误 . 添加所有其他引用的问题是引用出现在配置文件中,但它实际上并未在项目中引用(在解决方案资源管理器中),并且所需的文件未与其余项目文件一起复制,可能是因为没有 "copy local = true"

    现在,我无法在可添加的程序集中找到这些程序集(通过右键单击引用并尝试从程序集或扩展中添加它们) . 相反,我创建了一个新的MVC解决方案,它添加了我需要的所有程序集和引用,并在解决方案资源管理器中的新项目引用下找到它们,并在属性窗口中找到它们的路径以供参考 .

    然后我只是将我需要的库复制到另一个项目中并引用它们 .

  • 25

    尝试了一切后仍然失败这是我的解决方案:我记得我有错误并且错误最后更新我的Visual Studio中的MVC版本所以我从另一个Visual Studio(不同的计算机)运行项目,而不是上传dll-s并且它有效 . 也许它会帮助别人......

  • 6

    我正在使用Jenkins和.net项目,并且遇到了MVC 4引用的麻烦 .

    我终于通过使用基于注册表的.Net参考搜索引擎功能解决了我的问题:

    “HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ V2.0.50727 \ AssemblyFoldersEx”

    例如,您可以创建子键并将默认键设置为“c:\ myreferenceedir” .

    它为我节省了MVC版本和ASP.net网页 .

    有用于添加对“添加引用对话框”的引用

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

  • 3

    正如其他人所提到的,将这些引用添加到视觉工作室中, Copy Local 设置为 true . (我也不得不添加 System.Web.Webpages

    Microsoft.Web.Infrastructure
    System.Web.Razor
    System.Web.WebPages.Deployment
    System.Web.WebPages.Razor
    System.Web.Webpages
    
  • 13

    我使用Manage NuGet Packages添加了“Microsoft ASP.NET Razor” .

    使用Add References,出于某种原因,我只有System.Web.Helpers 1.0.0和2.0.0 ......但不是3.0.0 .

    我的另一个选择是删除对System.Web.Mvc和System.Web.Http的引用...然后将它们重新添加到csproj文件中的包位置(您可以最轻松地编辑项目文本编辑器):

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

    一个重要的考虑因素是web.config文件,有些软件包可能会破坏你的绑定重定向导致破坏(流氓软件包是内部包,我没有从包中删除web.config或确保包中的web.config)没有任何绑定重定向 . 例如,通过删除重复和不正确的节点解决此问题

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

    通过删除第8到24行修复了构建 .

相关问题