【问题标题】:Could not load file or assembly 'System.Web.Http, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies无法加载文件或程序集 'System.Web.Http, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一
【发布时间】:2016-08-26 17:30:50
【问题描述】:

使用 Visual Studio 2015 和 Sitecore 8.0
我使用 .Net Framework 4.6.1 创建了一个新的 MVC 项目,复制并引用了 Sitecore.kernel.dll 和 Sitecore.mvc.dll。将现有的 web.config 和 global.asax 替换为 sitecore 文件。
在解决方案中添加了一个纯 HTML 页面并尝试浏览它(来自 VS)。页面打开时出现此错误

无法加载文件或程序集 'System.Web.Http, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其其中之一 依赖项。系统找不到指定的文件。

此 HTML 页面尚未发布到 Sitecore。我猜,Sitecore.mvc.dll 想要 MVC 5.1.0 而 VS 项目中的 MVC 是 4.0。

所以,我尝试了以下步骤。

  1. 在 MVC 5.1.1 的包管理器控制台中运行 install package 命令会显示错误

无法加载源的服务索引 https://api.nuget.org/v3/index.json.

  1. 删除%AppData%\NuGet\nuget.config并重启VS2015

  2. 手动浏览https://api.nuget.org/v3/index.json,但页面未加载 - Secure connection failed。但这 - http://api.nuget.org/v3/index.json 将提示下载 json。因此,在 nuget 中将 https 更改为 http,但它的错误相同 - 无法加载服务索引...

发生这种情况时,我什至无法启动我的第一个 Sitecore MVC 项目。

我用常规 VS 项目的 web.config 替换了 sitecore web.config,现在我可以浏览该页面了。我将其复制到输出目录设置为不复制,这样它就不会被发布。

以后我是否能够以这种方式继续我的 Sitecore 开发而不会出现任何重大问题。

【问题讨论】:

  • Sitecore MVC 依赖于特定版本的 ASP.Net MVC。您尝试安装正确的 Nuget 包的步骤是正确的。你的问题是 Nuget.... 我可以安装 MVC 5.1.1,访问api.nuget.org/v3/index.json。作为解决方法,您可以从 Sitecore 安装文件夹获取(和引用)正确的 MVC 程序集。但正确的方法是:找出 Nuget 的问题所在。 (我猜可能是防火墙)

标签: asp.net-mvc-4 sitecore nuget-package


【解决方案1】:

你需要做一些事情来解决这个问题:

您的 VS 项目应更新为具有来自 Sitecore 安装的 web.config 文件。您必须拥有该文件的 Sitecore 版本,否则 Sitecore 将无法正常运行

您应该为 MVC 文件添加绑定重定向,使所有内容都使用最新版本:

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

确保/views 文件夹中的 web.config 文件包含所有 MVC 程序集的正确版本。这是我的 .net 4.6 应用程序:

<configSections>
    <sectionGroup name="system.web.webPages.razor"
        type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host"
        type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        requirePermission="false" />
    <section name="pages"
        type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        requirePermission="false" />
    </sectionGroup>
</configSections>

<system.web.webPages.razor>
    <host
        factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Optimization" />
            <add namespace="System.Web.Routing" />
            <add namespace="Sitecore.Mvc" />
            <add namespace="Sitecore" />
        </namespaces>
    </pages>
</system.web.webPages.razor>

完成后,您的 Sitecore 安装应正确选择最新的 MVC 二进制文件。

【讨论】:

    猜你喜欢
    • 2017-02-14
    • 2018-03-21
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多