2012-12-18 18 views
81

我碰到下面的錯誤,當我開始我的ASP淨MVC 4應用:無法加載文件或程序集「DotNetOpenAuth.Core

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. 

我已經使用packager管理器從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> 

感謝

回答

81

如果你不想使用OAuth,刪除引用:無論是網頁OAuth的DLL(我認爲這是Microsoft.Web.WebPages.OAuth.dll )和DotNetOpenAuth的DLL。


:你可以找到的文件名中Calling assembly。因此,刪除所有calling assemblyDotNetOpenAuth.Core應該適合您。這種方法應該適用於其他未使用的缺失引用。

+1

看到引用名稱Microsoft.Web.WebPages.OAuth.dll很有幫助,因爲大多數引用都是從DotNetOpenAuth開始的。這幫助我解決了這個問題。謝謝Ian Li – Catto

2

嘗試做一個全球性的解決方案搜索(Ctrl + Shift + F,如果你沒有改變的話)的值 '2780ccd10d57b246'。我猜你會在你的web.config中找到它。

+0

這是問題......沒有參考。找到所有「2780ccd10d57b246」,子文件夾,查找結果1,整個解決方案,「」 匹配行數:0匹配文件:0搜索的總文件數:182 –

+6

從我的項目中完成刪除DotNetOpenAuth *的最佳方式是什麼?我已經刪除了臨時目錄,排除了bin和obj文件夾,重新構建瞭解決方案,並使用packager管理器控制檯刪除了所有OpenAuth和OpenID包...我不知道現在要做什麼。也通過完全刪除DotNetOpenAuth使用Google搜索沒有有用的結果。 –

22

我在部署MVC應用程序時看到過這種情況,如bin deploy。當你右鍵點擊一個項目並選擇Add deployable dependencies如果你選中ASP .NET Webpages with Razor syntax旁邊的框,VS會添加對Oauth的引用。

若要解決此問題,請刪除_bin_deployableAssemblies文件夾和您的應用程序的bin文件夾,然後清理並重新構建您的應用程序,它將再次運行。

+2

這有固定小時數的頭部劃傷,謝謝 – Brobina

+1

我試圖運行MSDN - Project Silk。上述步驟幫助我解決了問題 – dekdev

+1

而不是刪除整個_bin_deployableAssemblies文件夾,只需從中刪除Microsoft.Web.WebPages.OAuth文件就足夠了。 (當然,清理和重建也是需要的,以及清理目標發佈文件夾) – Jerther

71

我有類似的問題。由於該項目前一天運行良好,這真是太奇怪了。

從項目文件夾中刪除obj和bin文件夾,清理解決方案並重建它的工作。

希望有所幫助。

+10

這對我而言,而接受的答案沒有。 –

+2

這可能是通過清除已經在bin/obj文件夾中的oauth相關的DLL來實現的。刪除引用和重建不會刪除有問題的文件,但吹走目錄會。 –

+5

有同樣的問題,oauth dll被添加,但沒有添加DotNetOauth dll。清理沒有工作,手動刪除綁定和obj文件夾的作品。視覺工作室中的這些小的,但是破解應用程序的問題開始讓我感到緊張。 – Moulde

-2

刪除項目中任何地方的任何Microsoft.Web.WebPages.OAuth依賴項。

+0

和Microsoft.Web.WebPages.OAuth.dll從上面的響應 – felickz

16

在我的情況下,MVC4應用程序在VS2012調試器中運行良好,但當我在服務器上發佈應用程序時,出現「無法加載文件或程序集'DotNetOpenAuth.Core'」錯誤。

檢查「發佈Web窗口」設置選項卡上的「刪除發佈之前的所有現有文件」複選框可解決此問題。

File System Publishing Settings

+3

以上這解決了我的問題,雖然我上傳到Azure和勾選框標籤是'刪除目的地附加文件'。 –

+0

發佈之前刪除所有現有文件確實有效。謝謝! – gisek

+0

這也解決了我的問題!謝謝米卡! – Sam

10

我通過安裝使用的NuGet

包解決了這個問題
Install-Package Microsoft.AspNet.WebPages.OAuth 
+0

我已手動重新安裝此軟件包。 – CodingBarfield

+0

這爲我工作! –

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

請在這裏添加內容 – SSP

+0

請不要發佈鏈接的答案。請在答案中寫下鏈接中的相關信息。 – Sumurai8

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – wudzik

0

如果這可以幫助任何人 - 我無法通過Nuget卸載DotNetOpenAuth組件,因此我通過從引用列表d中刪除它們來解決此錯誤直接,然後通過nuget重新安裝dotnetopenauth。

3

通過安裝以下兩個包,我決定在VS2012專業更新4 RC這個問題:

  1. 打開從菜單中的程序包管理器控制檯:

    工具|庫包管理|包管理器控制檯

  2. 安裝,包裝DotNetOpenAuth.AspNet

  3. 安裝,包裝Microsoft.AspNet.WebHelpers

希望這有助於爲你!

1

我沒有評論的聲望,但我可以驗證我有這個確切的問題,傑克給我正確的解決方案。我最近按下了「添加服務引用」,並用上面的錯誤消息破壞了程序。

刪除_bin_deployableAssemblies文件夾和您的應用程序的bin文件夾,然後清理並重新生成應用程序使其重新工作。

0

我得到這個錯誤,但與ASP.NET MVC 5項目。我解決了它通過安裝包DotNetOpenAuth.Mvc5並調用AsActionResultMvc5()而不是AsActionResult()

1

對我來說,它的工作方式如下,使用packager管理器控制檯,我卸載軟件包,按照以下順序我重新安裝了它,它解決了我的問題..

卸載

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,因爲我面臨的問題是在服務器上出現問題,造成問題...
3

只需在發佈設置中選擇「在目的地刪除其他文件」。 這對我的作品

+1

這樣一個簡單的解決方案應該有1k upvotes!我一直在爲此掙扎三天,試圖發佈到Azure。 – saiyancoder

0

對我幫助了增加的csproj文件中的以下部分:

<PropertyGroup> 
    <PostSharpHostConfigurationFile>web.config</PostSharpHostConfigurationFile>    
</PropertyGroup> 
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

我能夠通過刪除Microsoft.AspNet.Membership.OpenAuth來解決它我的問題

相關問題