无法加载文件或程序集'DotNetOpenAuth.Core


83

启动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>

谢谢

Answers:


82

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


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


1
查看引用名称Microsoft.Web.WebPages.OAuth.dll很有帮助,因为大多数引用都是以DotNetOpenAuth开头的。那为我解决了这个问题。谢谢Ian Li
Catto

77

我有类似的问题。真的很奇怪,因为该项目前一天运行正常。

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

希望能有所帮助。


2
这可以通过清除bin / obj文件夹中已经存在的与oauth相关的DLL来实现。删除引用并重建不会删除有问题的文件,但会删除目录。
Michael Haren

5
发生相同的问题,添加了oauth dll,但未添加DotNetOauth dll。清理无效,手动删除bind和obj文件夹有效。Visual Studio中的这些小但应用程序中断的问题开始引起我的注意。
莫尔德2013年

2
我有同样的问题,删除这些文件夹不起作用。我删除了它们,清理并重建解决方案,问题仍然存在
chiapa 2014年

此oauth库使用webactivator进行初始化,因此删除引用还不够,必须从bin文件夹中删除库(webactivator枚举其加载到的文件夹中的dll文件)
Mel

就像恰帕(chiapa),我也遇到同样的问题。我删除了bin和obj,进行了清理和重新构建,但问题仍然存在。但是后来我重新启动了Visual Studio,它开始工作了
wha7ever

22

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

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


1
我试图运行MSDN-Project Silk。以上步骤帮助我解决了问题
dekdev

1
而不是删除整个_bin_deployableAssemblies文件夹,仅从那里删除Microsoft.Web.WebPages.OAuth文件就足够了。(当然,还需要清理和重建以及清理目标发布文件夹)
Jerther 2014年

16

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

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

文件系统发布设置


3
尽管我正在上传到Azure,并且勾选框标签为“在目标位置删除其他文件”,但这解决了我的问题。
阿德里安·史密斯

在发布之前删除所有现有文件确实有效。谢谢!
Andrzej Gis 2013年

12

我通过使用Nuget安装软件包解决了问题

Install-Package Microsoft.AspNet.WebPages.OAuth

4

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


1
这样简单的解决方案应该有1k票!我已经为此苦苦挣扎了三天,试图发布到Azure。
saiyancoder

3

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

  1. 从菜单中打开Package Manager控制台:

    工具| 图书包管理| 程序包管理器控制台

  2. 安装包DotNetOpenAuth.AspNet

  3. 安装包Microsoft.AspNet.WebHelpers

希望这对您有所帮助!!!


2

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


这是问题...没有参考。查找所有“ 2780ccd10d57b246”,子文件夹,查找结果1,整个解决方案,“”匹配行:0匹配文件:0搜索到的文件总数:182
Dimas Longo

6
完成从项目中删除DotNetOpenAuth *的最佳方法是什么?我已经删除了temp目录,排除了bin和obj文件夹,重新构建了解决方案,并使用打包程序管理器控制台删除了所有OpenAuth和OpenID程序包...我现在不知道该怎么办。通过完全删除DotNetOpenAuth进行谷歌搜索也没有任何帮助。
Dimas Longo

2

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

解除安装

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,因为我遇到了问题,即服务器中有现金,这就是问题所在...

1

另一种解决方案是具有程序集依赖关系,如下所示:

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

请在此处添加内容
SSP

请不要发布仅链接的答案。请从答案中的链接中写出相关信息。
Sumurai13年

虽然此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。
卡米尔(Kamil Budziewski)

1

我没有发表评论的名声,但是我可以验证我有这个确切的问题,杰克为我提供了正确的解决方案。我最近按下了添加服务参考,它使用上面的错误消息破坏了程序。

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


0

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


0

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



0

我在这里有同样的问题。我发布的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>

刚刚添加,就可以了。


0

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



0

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

特别是,我将这些绑定重定向添加到了我的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.Web.WebPages.OAuth依赖项。


和Microsoft.Web.WebPages.OAuth.dll从上面的最高响应
felickz
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.