【问题标题】:Could not load file or assembly 'DotNetOpenAuth.Core无法加载文件或程序集“DotNetOpenAuth.Core
【发布时间】:2012-12-06 05:32:18
【问题描述】:

当我启动我的 asp net mvc 4 应用程序时出现以下错误:

Could not load file or assembly 'DotNetOpenAuth.Core, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=2780ccd10d57b246' or one of its dependencies. 
The system cannot find the file specified

这是错误日志

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Windows\SysWOW64\inetsrv\w3wp.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = notebook\Guilherme
LOG: DisplayName = DotNetOpenAuth.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246
 (Fully-specified)
LOG: Appbase = file:///C:/Users/Guilherme/Documents/Visual Studio 2012/Projects/Gedi/Gedi/
LOG: Initial PrivatePath = C:\Users\Guilherme\Documents\Visual Studio 2012\Projects\Gedi\Gedi\bin
Calling assembly : Microsoft.Web.WebPages.OAuth, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\Guilherme\Documents\Visual Studio 2012\Projects\Gedi\Gedi\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: DotNetOpenAuth.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/2635bb56/154c3fbb/DotNetOpenAuth.Core.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/2635bb56/154c3fbb/DotNetOpenAuth.Core/DotNetOpenAuth.Core.DLL.
LOG: Attempting download of new URL file:///C:/Users/Guilherme/Documents/Visual Studio 2012/Projects/Gedi/Gedi/bin/DotNetOpenAuth.Core.DLL.
LOG: Attempting download of new URL file:///C:/Users/Guilherme/Documents/Visual Studio 2012/Projects/Gedi/Gedi/bin/DotNetOpenAuth.Core/DotNetOpenAuth.Core.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/2635bb56/154c3fbb/DotNetOpenAuth.Core.EXE.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/2635bb56/154c3fbb/DotNetOpenAuth.Core/DotNetOpenAuth.Core.EXE.
LOG: Attempting download of new URL file:///C:/Users/Guilherme/Documents/Visual Studio 2012/Projects/Gedi/Gedi/bin/DotNetOpenAuth.Core.EXE.
LOG: Attempting download of new URL file:///C:/Users/Guilherme/Documents/Visual Studio 2012/Projects/Gedi/Gedi/bin/DotNetOpenAuth.Core/DotNetOpenAuth.Core.EXE.

我已经使用打包管理器从 DotNetOpenAuth 中删除了所有引用。我还通过我的自我引用检查了我在项目中拥有的每个 Auth 程序集,但没有。

这是我的packages.config

<packages>
  <package id="AutoMapper" version="2.2.0" targetFramework="net45" />
  <package id="EntityFramework" version="5.0.0" targetFramework="net45" />
  <package id="jQuery" version="1.7.1.1" targetFramework="net45" />
  <package id="jQuery.UI.Combined" version="1.8.20.1" targetFramework="net45" />
  <package id="jQuery.Validation" version="1.9.0.1" targetFramework="net45" />
  <package id="knockoutjs" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="4.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor" version="2.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi" version="4.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Client" version="4.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core" version="4.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages" version="2.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages.Data" version="2.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages.WebData" version="2.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Ajax" version="2.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="2.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net45" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Modernizr" version="2.5.3" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="4.5.11" targetFramework="net45" />
  <package id="Repository" version="1.0.2.12" targetFramework="net45" />
  <package id="RestSharp" version="103.4" targetFramework="net45" />
  <package id="WebGrease" version="1.1.0" targetFramework="net45" />
</packages>

谢谢

【问题讨论】:

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


    【解决方案1】:

    我在更新我们所有的库时遇到了这个问题。这个链接帮助我解决了这个问题。 https://www.devexpress.com/Support/Center/Question/Details/Q554890/the-could-not-load-file-or-assembly-dotnetopenauth-core-version-4-0-0-0-error-message-is.

    我特别将这些绑定重定向添加到我的 web.config 文件中。

          <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780CCD10D57B246" culture="neutral" />
        <bindingRedirect oldVersion="1.0.0.0-4.1.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780CCD10D57B246" culture="neutral" />
        <bindingRedirect oldVersion="1.0.0.0-4.1.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
    

    【讨论】:

      【解决方案2】:

      我能够通过删除 Microsoft.AspNet.Membership.OpenAuth 解决这个问题

      【讨论】:

        【解决方案3】:

        只需从 wwwroot 中删除 BIN 文件夹,然后再次发布。

        【讨论】:

          【解决方案4】:

          我在这里遇到了同样的问题。 我发布的 web.config 没有这些行:

            <dependentAssembly>
              <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" />
              <bindingRedirect oldVersion="1.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
            </dependentAssembly>
          

          刚刚添加,它起作用了。

          【讨论】:

            【解决方案5】:

            对我来说,帮助将以下部分添加到 csproj 文件中:

            <PropertyGroup>
               <PostSharpHostConfigurationFile>web.config</PostSharpHostConfigurationFile>            
            </PropertyGroup>
            

            【讨论】:

              【解决方案6】:

              只需在发布设置中选择“在目标位置删除其他文件”即可。 这对我有用

              【讨论】:

              • 这样一个简单的解决方案应该有 1k 点赞!我已经为此苦苦挣扎了三天,试图发布到 Azure。
              【解决方案7】:

              对我来说,它的工作原理如下,使用打包管理器控制台,我已经按照以下顺序卸载了这些包,然后我重新安装了它,它解决了我的问题..

              卸载

              Uninstall-Package Microsoft.AspNet.WebPages.OAuth
              Uninstall-Package DotNetOpenAuth.AspNet 
              Uninstall-Package DotNetOpenAuth.OpenId.RelyingParty
              Uninstall-Package DotNetOpenAuth.OpenId.Core 
              Uninstall-Package DotNetOpenAuth.OAuth.Consumer
              Uninstall-Package DotNetOpenAuth.OAuth.Core
              Uninstall-Package DotNetOpenAuth.core
              

              构建,如果您没有使用上述软件包,那么这应该可以解决问题,如果需要再次安装上述软件包,请执行以下操作..

              重新安装

              install-Package DotNetOpenAuth.AspNet 
              install-Package Microsoft.AspNet.WebPages.OAuth
              install-Package DotNetOpenAuth.OpenId.RelyingParty
              install-Package DotNetOpenAuth.OpenId.Core 
              install-Package DotNetOpenAuth.OAuth.Consumer
              install-Package DotNetOpenAuth.OAuth.Core
              install-Package DotNetOpenAuth.core
              

              推荐:

              • 进入项目的bin文件夹,清空
              • 何时发布到 IIS,删除虚拟目录并将网站重新分配给 IIS,因为我遇到了服务器中有现金的问题,这导致了问题...

              【讨论】:

                【解决方案8】:

                我也遇到了这个错误,但使用的是 ASP.NET MVC 5 项目。我通过安装 Package DotNetOpenAuth.Mvc5 并调用 AsActionResultMvc5() 而不是 AsActionResult() 解决了这个问题

                【讨论】:

                  【解决方案9】:

                  我没有评论的声誉,但我可以确认我遇到了这个确切的问题,并且 Jack 为我提供了正确的解决方案。我最近按下了添加服务引用,它用上述错误消息破坏了程序。

                  删除 _bin_deployableAssemblies 文件夹和应用程序的 bin 文件夹,然后清理并重建应用程序使其再次工作。

                  【讨论】:

                    【解决方案10】:

                    通过安装以下两个软件包,我在 VS2012 Professional Update 4 RC 上解决了这个问题:

                    1. 从菜单中打开包管理器控制台:

                      工具|库包管理 |包管理器控制台

                    2. 安装包 DotNetOpenAuth.AspNet

                    3. 安装包 Microsoft.AspNet.WebHelpers

                    希望对你有帮助!!!

                    【讨论】:

                      【解决方案11】:

                      另一种解决方案是具有以下程序集依赖项:

                      <dependentAssembly>
                        <assemblyIdentity name="DotNetOpenAuth.AspNet"
                                          publicKeyToken="2780ccd10d57b246"
                                          culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
                      </dependentAssembly>
                      <dependentAssembly>
                        <assemblyIdentity name="DotNetOpenAuth.Core"
                                          publicKeyToken="2780ccd10d57b246"
                                          culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
                      </dependentAssembly>
                      

                      【讨论】:

                      • 请在此处添加内容
                      • 请不要发布仅链接的答案。请从您的答案中的链接中写出相关信息。
                      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
                      【解决方案12】:

                      如果这对任何人都有帮助 - 我无法通过 Nuget 卸载 DotNetOpenAuth 组件,因此我通过直接从引用列表中删除它们然后通过 nuget 重新安装 dotnetopenauth 来解决此错误。

                      【讨论】:

                        【解决方案13】:

                        我通过使用 Nuget 安装包解决了这个问题

                        Install-Package Microsoft.AspNet.WebPages.OAuth
                        

                        【讨论】:

                          【解决方案14】:

                          在我的情况下,MVC4 应用程序在 VS2012 调试器中运行良好,但是当我在服务器上发布应用程序时出现“无法加载文件或程序集 'DotNetOpenAuth.Core'”错误。

                          在“发布 Web”窗口的设置选项卡上选中“在发布前删除所有现有文件”复选框解决了该问题。

                          【讨论】:

                          • 这解决了我的问题,尽管我正在上传到 Azure 并且复选框标签是“在目标位置删除其他文件”。
                          • 在发布之前删除所有现有文件确实有效。谢谢!
                          【解决方案15】:

                          删除项目中所有位置的任何 Microsoft.Web.WebPages.OAuth 依赖项。

                          【讨论】:

                          • 和上面的顶部响应中的 Microsoft.Web.WebPages.OAuth.dll
                          【解决方案16】:

                          我有类似的问题。这真的很奇怪,因为该项目在前一天运行良好。

                          从项目文件夹中删除 obj 和 bin 文件夹,清理解决方案并重建它有效。

                          希望对您有所帮助。

                          【讨论】:

                          • 这可能是通过清除 bin/obj 文件夹中已经存在的与 oauth 相关的 DLL 来实现的。删除引用并重建不会删除有问题的文件,但会删除目录。
                          • 有同样的问题,添加了oauth dll,但没有添加DotNetOauth dll。清理无效,手动删除 bind 和 obj 文件夹有效。 Visual Studio 中的这些小但破坏应用程序的问题开始让我感到不安。
                          • 我有同样的问题,删除这些文件夹不起作用。我删除它们,清理并重建解决方案,问题仍然存在
                          • 这个 oauth 库使用 webactivator 来初始化,所以删除引用是不够的,这些库必须从 bin 文件夹中删除(webactivator 枚举它加载的文件夹中的 dll 文件)
                          • 就像 chiapa 我也有同样的问题。我删除了 bin 和 obj,清理并重新构建,但问题仍然存在。但后来我重新启动了 Visual Studio,它工作了
                          【解决方案17】:

                          我在将 MVC 应用程序部署为 bin deploy 时看到了这种情况。当您右键单击项目并选择 Add deployable dependencies 时,如果您选中 ASP .NET Webpages with Razor syntax 旁边的框,VS 将添加对 Oauth 的引用。

                          要解决此问题,请删除 _bin_deployableAssemblies 文件夹和您的应用程序的 bin 文件夹,然后清理并重建您的应用程序,它会再次运行。

                          【讨论】:

                          • 我试图运行 MSDN - Project Silk。以上步骤帮助我解决了问题
                          • 而不是删除整个 _bin_deployableAssemblies 文件夹,只需从中删除 Microsoft.Web.WebPages.OAuth 文件对我来说就足够了。 (当然还需要clean和rebuild,以及清理目标发布文件夹)
                          【解决方案18】:

                          如果您不想使用 OAuth,请删除引用:WebPages OAuth DLL(我认为它是 Microsoft.Web.WebPages.OAuth.dll 1)和DotNetOpenAuth DLL。


                          1:您可以在Calling assembly 中找到文件名。因此,删除 DotNetOpenAuth.Core 中的所有 calling assembly 应该适合您。这种方法应该适用于其他未使用的缺失引用。

                          【讨论】:

                          • 查看参考名称 Microsoft.Web.WebPages.OAuth.dll 很有帮助,因为大多数参考都以 DotNetOpenAuth 开头。这有助于为我解决问题。谢谢伊恩李
                          【解决方案19】:

                          尝试对值“2780ccd10d57b246”进行全局解决方案搜索(如果未更改,请按 ctrl+shift+f)。我猜你会在你的 web.config 中找到它。

                          【讨论】:

                          • 这是问题...没有参考。查找所有“2780ccd10d57b246”、子文件夹、查找结果 1、整个解决方案、“”匹配行:0 匹配文件:0 搜索的总文件:182
                          • 从我的项目中完成删除 DotNetOpenAuth* 的最佳方法是什么?我已经删除了临时目录,排除了 bin 和 obj 文件夹,重新构建了解决方案并使用打包管理器控制台删除了所有 OpenAuth 和 OpenID 包......我现在不知道该怎么做。也通过完全删除 DotNetOpenAuth 进行谷歌搜索没有有用的结果。
                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2020-08-17
                          相关资源
                          最近更新 更多