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


200

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


“ /”应用程序中的服务器错误。


配置错误

说明:在处理服务于此请求所需的配置文件期间发生错误。请查看下面的特定错误详细信息,并适当修改您的配置文件。

解析器错误消息:无法加载文件或程序集'System.Web.Mvc,版本= 1.0.0.0,文化=中立,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该系统找不到指定的文件。

源错误:

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

源文件: C:\ inetpub \ www.example.org \ web.config 行: 46

程序集加载跟踪:以下信息有助于确定为什么无法加载程序集'System.Web.Mvc,版本= 1.0.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35'。

WRN:程序集绑定日志记录已关闭。
若要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。
注意:程序集绑定失败日志记录会带来一些性能损失。
要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。

版本信息: Microsoft .NET Framework版本:2.0.50727.3053;ASP.NET版本:2.0.50727.3053


我需要在服务器上安装AspNetMVCBeta-setup.msi吗?还是服务器有其他安装程序?

在此处输入图片说明

Answers:


215

我刚刚写了一篇博客文章解决这个问题。您可以在服务器上安装ASP.NET MVC,也可以按照此处步骤进行操作


编辑:(通过jcolebrand)我通过了此链接,然后遇到了与Victor 下面相同的问题,因此我建议您也添加以下内容:

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

6
注意:当您安装了MVC4(当前为beta)时,您将要获取这些DLL的v1.0,还需要获取System.Web.Helpers(至少我需要这样做)。
Tracker1 2011年

1
-1您链接到的帖子没有说明如何通过发布机制将Microsoft.Web.Infrastructure链接到Web服务器。不得不直接在服务器上安装东西,有点像。
Mark Rogers

1
:与Visual Studio 2010年,这个已经变得更加容易,因为这里解释britishdeveloper.co.uk/2011/06/...
丹尼尔TULP

或者如果您不使用Web Deploy,请在这里britishdeveloper.co.uk/2011/05/…–
Jeroen K

我必须整理bin文件夹,然后再次发布,即,如果您不使用Deploy Package。
罗伯特·科赫


26

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

几天前,Phil Haack发表了一篇不错的文章,介绍如何与您的应用程序一起部署MVC,因此无需直接安装:

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


25

我在尝试在GoDaddy共享主机上部署MVC3 Razor Web应用程序时遇到了同样的问题。还有一些其他.dll需要引用。此处详细信息:http//paulmason.biz/?p = 108

基本上,除了@Haacked的帖子中列出的内容以外,您还需要添加以下内容的引用,并按照说明将它们设置为本地部署。

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

谢谢,在手动添加引用然后在本地部署它们之后,它确实解决了MVC3的问题!
Stefanvds 2011年

这里也是一样。有关添加这些其他DLL的良好指导。谢谢!
Mike L

这里也是一样。不是在GoDaddy上,而是在我公司的服务器上,因此这仅仅是一个简单的案例。
TJKjaer 2011年

13

在VS2010中,在解决方案资源管理器中右键单击该项目,然后选择“添加可部署依赖项”。然后在以下对话框中选中与MVC相关的复选框。

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


9

简单修复。在VS2010中,右键单击您的MVC项目,选择“添加可部署依赖项...”,选择所需的选项,然后单击“确定”。


8

快速简单的解决方案:我在使用Microsoft.AspNet.Mvc-版本5.2.3时遇到了此问题,经过所有这些线程后,我找到了一个最简单的解决方案。

只需按照以下步骤操作:

  1. 在Visual Studio中为您的项目打开NuGet软件包管理器
  2. 搜索Microsoft.AspNet.Mvc
  3. 找到后,将操作更改为“卸载”,然后将其卸载
  4. 完成后,再次安装并立即尝试

这将自动解决所有与参考有关的问题。见下图:

在此处输入图片说明


7

遇到了相同的问题,并添加了他们所说的所有程序集,但仍然出现相同的错误。

原来,您需要使“ 特定版本 ” = False。

特定版本应为false。


或者,如果未启用,则应将“本地复制”切换为“真”,
AStopher

6

我们要添加它,因为我们正在制作一个使用它的类库。

对我来说就在这里...

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


3

如果您不使用托管服务提供商,并且可以访问服务器进行安装...然后安装MVC 3更新工具,则可以执行此操作...这样可以在Windows 2003 Server / IIS6计算机上节省大量时间。,我在这里在此页上发表评论 Nuget.Core.dll版本号不匹配


3

除了Haack职位外,Hanselman也有一个类似的职位。 BIN将带有Razor的ASP.NET MVC 3部署到未安装MVC的Windows Server

对我来说,“复制本地= true”解决方案是不够的,因为我的网站的项目引用未包含所有缺少的dll。正如Scott在他的文章中提到的,我还需要从开发框中的以下文件夹中获取其他dll:C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies。该错误消息通知我缺少哪个dll(System.Web.Infrastructure,System.Web.Razor等)。我继续逐个添加每个丢失的dll,直到它起作用为止。


3

我已经做了一个“更新包–重新安装Microsoft.AspNet.Mvc”来在Visual Studio 2015中修复它。


3

一个重要的考虑因素是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行修复了构建。


2

还要在Views文件夹内的web.config中检查程序集的版本,并确保其匹配。有时我忘记在该位置有第二个web.config。



2

将项目移至另一个解决方案后,我遇到了一堆装配文件相同的问题。

对我来说,该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解决方案,该解决方案添加了所需的所有程序集和引用,并在解决方案资源管理器中的新项目引用下找到了它们,并在属性窗口中找到了该引用的路径。

然后,我只是将所需的库复制到另一个项目中,并引用了它们。


1

在尝试了一切但仍然失败之后,这就是我的解决方案:我记得我在Visual Studio中最后一次更新MVC版本时遇到了错误,因此我从另一台Visual Studio(不同的计算机)运行该项目,然后上传了dll-s并成功了。也许会帮助某人...


0

我在.net项目中使用Jenkins,但在使用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/


0

正如其他人提到的,请将这些引用添加到Copy Local设置为的视觉工作室true。(我还必须添加System.Web.Webpages

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

0

我使用“管理NuGet程序包”添加了“ Microsoft ASP.NET Razor”。

出于某种原因,使用“添加引用”时,我只有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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.