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

时间:2008-11-05 22:40:35

标签: asp.net-mvc

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


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


配置错误

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

分析程序错误消息:无法加载文件或程序集“System.Web.Mvc,Version = 1.0.0.0,Culture = neutral,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,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].

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


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

enter image description here

20 个答案:

答案 0 :(得分:213)

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


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

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

答案 1 :(得分:41)

我遇到了与sgriffinusa相同的问题。 除了参考文献菲尔的文章建议: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部署工作完美。关闭自定义错误并添加引用以更正错误。这应该会引导你朝着正确的方向前进。

答案 2 :(得分:26)

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

菲尔哈克几天前发布了一篇关于如何与你的应用程序一起部署MVC的好文章,所以没有必要直接安装:

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

答案 3 :(得分:25)

我遇到了同样的问题,试图在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

答案 4 :(得分:13)

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

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

答案 5 :(得分:9)

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

答案 6 :(得分:6)

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

对我而言,就在这里......

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

答案 7 :(得分:6)

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

结果证明你需要使“特定版本”= False。

Specific version should be false.

答案 8 :(得分:6)

快速&amp;简单的解决方案:我遇到了Microsoft.AspNet.Mvc -Version 5.2.3的这个问题,经过所有这些线程后,我找到了一个最简单的解决方案。

请按照以下步骤操作:

  1. 在Visual Studio中为您的项目打开NuGet包管理器
  2. 搜索Microsoft.AspNet.Mvc
  3. 找到后,将操作更改为“卸载并卸载”
  4. 完成后,再次安装并立即尝试
  5. 这将自动修复引用的所有问题。 见下图:

    enter image description here

答案 9 :(得分:3)

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

答案 10 :(得分:3)

除了哈克的帖子,汉塞尔曼也有类似的帖子。 BIN Delploying ASP.NET MVC 3 with Razor to a Windows Server without MVC installed

对我来说,“Copy Local = 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,直到它工作。

答案 11 :(得分:3)

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

答案 12 :(得分:2)

答案 13 :(得分:2)

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

答案 14 :(得分:2)

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

对我来说,var iframe = "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/oyoew4T74_w\" frameborder=\"0\" allowfullscreen></iframe>"; Match matchdec = Regex.Match(iframe, @"\ssrc='\b(\S*)\b", RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase); if (matchdec.Success) { if (matchdec.Groups.Count > 1) { var retval = matchdec.Groups[1].Value; <div class="video-link"> <a class="md-trigger" data-modal="modal-9" data-filmtitle="@childNode.GetProperty("sliderItemTitle").Value"> <span>Se trailer</span> <div class="iframelink" style="display:none">@retval</div> </a> </div> } } 文件试图添加此程序集:

web.config

认为项目中的引用指向版本<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> (单击引用并滚动到属性的底部)。因此我只更改了3.0.0.0文件中的参考版本。

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

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

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

答案 15 :(得分:0)

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

    <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行修复了构建。

答案 16 :(得分:0)

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

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

答案 17 :(得分:0)

我添加了#34; Microsoft ASP.NET Razor&#34;使用Manage NuGet Packages。

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

答案 18 :(得分:0)

我正在使用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/

答案 19 :(得分:0)

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