【问题标题】:Could not load file or assembly 'System.Web.Helpers, error on IIS 8无法加载文件或程序集“System.Web.Helpers,在 IIS 8 上出错
【发布时间】:2013-10-28 00:52:52
【问题描述】:

我有一个使用本地 IIS Express 服务器在 Visual Studio 2012 上运行良好的 MVC4 Web 应用程序。当我将应用程序发布到在 Windows 2012 上运行的 IIS 8 Web 服务器时,初始登录页面显示正确。但是,使用远程调试时,我看到当我使用以下行检查凭据时:

if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))

我得到下图所示的错误:
(来源:usf.edu

【问题讨论】:

    标签: c# asp.net asp.net-mvc-4 iis


    【解决方案1】:

    System.Web.Helpers.dll 包含在官方 Nuget 包 Microsoft.AspNet.WebPages 中。

    安装它并且应该更正引用,并且应该将文件复制到您的 bin 文件夹中。

    【讨论】:

      【解决方案2】:

      添加正确版本的 MVC 后,添加了对 Microsoft Web Helper 的引用,但没有添加 System.Web.Helper。将此手动添加到您的参考文献中。

      【讨论】:

        【解决方案3】:

        只是添加到现有的答案,因为即使我遇到了同样的错误,也无法在程序集中找到引用。我只会分享对我有帮助的:

        从工具->NuGet 包管理器->包管理器控制台打开包管理器并输入:

        PM> Install-Package microsoft-web-helpers
        

        在此之后 System.Web.Helpers 将出现在 References->Assemblies 下。从那里可以将“复制本地”属性更改为 True。

        【讨论】:

          【解决方案4】:

          确保它正在寻找文件的正确版本。我的不正确,web.config 文件指向的版本比我在项目中的版本高。

          在属性中我注意到版本是 2.0.0.0,所以我在 web.config 文件中设置了这个版本

          【讨论】:

            【解决方案5】:

            您的 Web.config 文件可能有问题。 打开文件并找到<runtime></runtime> 标签。 修改MVC的版本。 例如,MVC 3

            <runtime>
                <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                    <dependentAssembly>
                        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
                        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
                    </dependentAssembly>
                </assemblyBinding>
            </runtime>
            

            【讨论】:

            • 也许不是答案。您应该为此使用 cmets。当然欢迎来到 StackOverflow! :)
            【解决方案6】:

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

            使用 Add References,由于某种原因,我只有 System.Web.Helpers 1.0.0 和 2.0.0...,但没有 3.0.0。

            【讨论】:

            • 已经安装了这个并且在构建时仍然收到这个引用错误:警告 MSB3245:无法解析这个引用。找不到程序集“System.Web.Helpers,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL”。检查以确保该程序集存在于磁盘上。如果您的代码需要此引用,则可能会出现编译错误。
            【解决方案7】:

            我正在运行 VS 2015Preview,可以通过 NuGet 安装最新版本的 MVC 来解决此问题。

            以防万一有人仍然遇到这个。

            【讨论】:

              【解决方案8】:

              我能够通过下载Microsoft Web Platform Installer、搜索 MVC 并安装“ASP.NET MVC3 (Visual Studio 2010) Released 4/11/2011”包来解决此问题。在安装之前关闭任何 Visual Studio 实例。

              【讨论】:

              • 这种方法也适用于我的构建服务器。我使用 Web 平台安装程序安装了 ASP.NET MVC 4,因为参考错误消失了。
              • 这对我在 VS2015 中解决此参考很有帮助。
              • 这对我来说解决了这个参考是VS2017。
              • 2021 年修复仍然很好
              【解决方案9】:

              我在 IIS 8 中使用 WCF 服务时遇到了同样的问题。看看这个解决方案 Deploying ASP.NET,它对我有用。

              【讨论】:

                【解决方案10】:

                听起来好像没有在服务器上安装 MVC。

                【讨论】:

                【解决方案11】:

                解决方案 - 将引用复制到本地

                1. 右键单击参考 System.Web.Helpers 并选择属性
                2. 将 Copy Local 更改为 true。
                3. 构建解决方案

                【讨论】:

                • 感谢您的回复。我确实读过其他提到这一点的回复,我应该提到这一点。但是我在项目引用中没有看到 System.Web.Helpers。 WebMatrix.WebData 在本地复制。
                • 在我的情况下,“复制本地”已经是真的了。但是由于某种原因(可能是因为解决方案中与nuget相关的更改)iis上解决方案的bin文件夹不包含任何.dll,包括System.Web.Helpers。当我复制该文件夹中的所有 .dll 时,它开始工作。这可能不是解决方案,但如果有人遇到此问题,请首先检查构建解决方案后是否将 .dll 加载到 bin 文件夹中
                • 太棒了,我遇到了 Azure Webjobs 的问题,这是错误,最后这个解决方案对我有用
                猜你喜欢
                • 2015-09-25
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-12-23
                • 2017-02-11
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多