Nie można załadować pliku lub zestawu „DotNetOpenAuth.Core

83

Po uruchomieniu aplikacji ASP net MVC 4 pojawia się następujący błąd:

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

To jest dziennik błędów

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.

Usunąłem już wszystkie odwołania z DotNetOpenAuth za pomocą menedżera pakowania. Sprawdziłem również własne odniesienia dla każdego zestawu Auth, który miałem w moim projekcie i nie ma żadnego.

To jest moje 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>

Dzięki

Dimas Longo
źródło

Odpowiedzi:

82

Jeśli nie chcesz używać OAuth, usuń odniesienia: zarówno bibliotekę DLL OAuth stron sieci Web (myślę, że jest to Microsoft.Web.WebPages.OAuth.dll 1 ), jak i biblioteki DLL DotNetOpenAuth.


1 : Możesz znaleźć nazwę pliku w Calling assembly. Dlatego usunięcie wszystkich calling assemblyelementów DotNetOpenAuth.Corepowinno działać dla Ciebie. To podejście powinno działać w przypadku innych nieużywanych brakujących odniesień.

Ian Li
źródło
1
Warto było zapoznać się z nazwą odniesienia Microsoft.Web.WebPages.OAuth.dll, ponieważ większość odwołań zaczęła się od DotNetOpenAuth. To pomogło mi rozwiązać problem. Dziękuję Ian Li
Catto
77

Miałem podobny problem. To było naprawdę dziwne, ponieważ projekt działał dobrze dzień wcześniej.

Usunięcie folderów obj i bin z folderu projektu, wyczyszczenie roztworu i odbudowanie go zadziałało.

Mam nadzieję, że to pomoże.

Sylwester Gryzio
źródło
2
Prawdopodobnie zadziałało to przez wyczyszczenie biblioteki DLL związanej z oauth, która była już w folderach bin / obj. Usunięcie odniesienia i przebudowanie nie usunęłoby plików powodujących problemy, ale usunięcie katalogów tak.
Michael Haren
5
Miał ten sam problem, dodano bibliotekę dll oauth, ale nie dodano biblioteki DLL DotNetOauth. Czyszczenie nie działa, ręczne usuwanie folderów bind i obj działa. Te małe, ale łamiące aplikacje problemy w Visual Studio zaczynają mi działać na nerwy.
Moulde
2
Mam ten sam problem i usunięcie tych folderów nie działa. Usuwam je, czyszczę i odbudowuję rozwiązanie, a problem pozostaje
chiapa
ta biblioteka oauth używa webactivatora do inicjalizacji, więc usunięcie odniesień nie wystarczy, biblioteki muszą zostać usunięte z folderu bin (webactivator wylicza pliki dll w folderze, w którym został załadowany)
Mel
Podobnie jak chiapa miałem ten sam problem. Usunąłem bin i obj, wyczyściłem i odbudowałem, ale problem pozostał. Ale potem zrestartowałem Visual Studio i zadziałało .
cokolwiek
22

Widziałem to podczas wdrażania aplikacji MVC jako bin deploy. Po kliknięciu projektu prawym przyciskiem myszy i wybraniu programu Add deployable dependenciesVS doda odwołania do Oauth, jeśli zaznaczysz pole obok ASP .NET Webpages with Razor syntax.

Aby to naprawić, usuń _bin_deployableAssembliesfolder i folder aplikacji, bina następnie wyczyść i ponownie skompiluj aplikację i będzie działać ponownie.

Jacek
źródło
1
Próbowałem uruchomić MSDN - Project Silk. powyższe kroki pomogły mi rozwiązać problem
dekdev
1
zamiast usuwać cały folder _bin_deployableAssemblies, wystarczyło mi samo usunięcie plików Microsoft.Web.WebPages.OAuth. (oczywiście konieczne było również wyczyszczenie i przebudowanie, a także wyczyszczenie docelowego folderu publikacji)
Jerther
16

W moim przypadku aplikacja MVC4 działała poprawnie w debugerze VS2012, ale podczas publikowania aplikacji na serwerze pojawiał się błąd „Nie można załadować pliku lub zestawu 'DotNetOpenAuth.Core'”.

Zaznaczenie pola wyboru „Usuń wszystkie istniejące pliki przed opublikowaniem” na karcie ustawień w oknie Publikuj w sieci WWW rozwiązało problem.

Ustawienia publikowania systemu plików

mitaka
źródło
3
To rozwiązało mój problem, mimo że ładowałem na platformę Azure, a etykieta pola wyboru brzmiała „Usuń dodatkowe pliki w miejscu docelowym”.
Adrian Smith
Usunięcie wszystkich istniejących plików przed opublikowaniem naprawdę działało. Dzięki!
Andrzej Gis
12

Rozwiązałem problem, instalując pakiet za pomocą Nuget

Install-Package Microsoft.AspNet.WebPages.OAuth
mLar
źródło
4

Po prostu wybierz „Usuń dodatkowe pliki w miejscu docelowym” w ustawieniach publikowania. To działa dla mnie

Anpix
źródło
1
Takie proste rozwiązanie powinno mieć 1k upvotes! Walczę z tym przez trzy dni, próbując opublikować na platformie Azure.
saiyancoder
3

Instalując następujące dwa pakiety rozwiązałem ten problem w VS2012 Professional Update 4 RC:

  1. Otwórz konsolę Menedżera pakietów z menu:

    Narzędzia | Zarządzanie pakietem bibliotecznym | Konsola menedżera pakietów

  2. Zainstaluj pakiet DotNetOpenAuth.AspNet

  3. Zainstaluj pakiet Microsoft.AspNet.WebHelpers

Mam nadzieję, że to pomoże Ci !!!

user2969674
źródło
2

Spróbuj przeprowadzić globalne wyszukiwanie rozwiązania (ctrl + shift + f, jeśli go nie zmieniłeś) dla wartości „2780ccd10d57b246”. Zgaduję, że znajdziesz go w swoim pliku web.config.

Wrzos
źródło
To jest problem ... nie ma odniesienia. Znajdź wszystkie "2780ccd10d57b246", Podfoldery, Znajdź wyniki 1, Całe rozwiązanie, "" Pasujące wiersze: 0 Pasujące pliki: 0 Łączna liczba przeszukiwanych plików: 182
Dimas Longo
6
Jaki jest najlepszy sposób usunięcia DotNetOpenAuth * z mojego projektu? Usunąłem katalog tymczasowy, wykluczyłem foldery bin i obj, ponownie zbudowałem rozwiązanie i usunąłem wszystkie pakiety OpenAuth i OpenID za pomocą konsoli menedżera pakietów… Nie mam pojęcia, co teraz zrobić. Również googlowanie przez całkowite usunięcie DotNetOpenAuth Nie ma pomocnego wyniku.
Dimas Longo,
2

dla mnie działało tak, jak poniżej, używając konsoli menedżera pakietów, odinstalowałem pakiety zgodnie z następującą kolejnością kolejności i ponownie go zainstalowałem, rozwiązało to mój problem.

Odinstalowywanie

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

Kompiluj, jeśli nie używasz powyższych pakietów, powinno to rozwiązać problem. Aby ponownie zainstalować powyższe, jeśli jest to potrzebne, wykonaj następujące czynności.

Zainstaluj ponownie

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

polecany:

  • przejdź do folderu bin projektu, wyczyść go
  • kiedy opublikować w IIS, usunąć katalog wirtualny i ponownie przypisać witrynę do IIS, ponieważ miałem problem z posiadaniem gotówki na serwerze, który był przyczyną problemu ...
Adel
źródło
1

Jeszcze jedną opcją rozwiązania jest zależność zestawu w następujący sposób:

<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>
MuJosh
źródło
proszę dodać treść tutaj
SSP
Prosimy nie publikować odpowiedzi zawierających tylko łącza. Wpisz odpowiednie informacje z linku w swojej odpowiedzi.
Sumurai8,
Chociaż ten link może odpowiedzieć na pytanie, lepiej jest zawrzeć tutaj zasadnicze części odpowiedzi i podać link do odniesienia. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie.
Kamil Budziewski
1

Nie mam reputacji do komentowania, ale mogę sprawdzić, czy miałem dokładnie ten problem i Jack podał mi prawidłowe rozwiązanie. Niedawno nacisnąłem Add Service Reference i zepsuło to program z powyższym komunikatem o błędzie.

Usunięcie folderu _bin_deployableAssemblies i folderu bin aplikacji, a następnie wyczyszczenie i ponowne skompilowanie aplikacji sprawiło, że działała ponownie.

JPK
źródło
0

Na wypadek, gdyby to pomogło każdemu - nie udało mi się odinstalować składników DotNetOpenAuth za pośrednictwem Nuget, więc rozwiązałem ten błąd, usuwając je bezpośrednio z listy odniesień, a następnie ponownie instalując dotnetopenauth za pośrednictwem nuget.

Fijjit
źródło
0

Otrzymałem również ten błąd, ale z projektem ASP.NET MVC 5. Rozwiązałem to, instalując pakiet DotNetOpenAuth.Mvc5 i wywołując AsActionResultMvc5 () zamiast AsActionResult ()

Bezimienny
źródło
0

U mnie pomogło dodanie do pliku csproj następującej sekcji:

<PropertyGroup>
   <PostSharpHostConfigurationFile>web.config</PostSharpHostConfigurationFile>            
</PropertyGroup>
Iwona Kubowicz
źródło
0

Tu miałem ten sam problem. Mój opublikowany plik web.config nie zawierał linii:

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

Właśnie dodane i zadziałało.

Thiago
źródło
0

Po prostu usuń folder BIN z wwwroot i opublikuj ponownie.

fede
źródło
0

Udało mi się rozwiązać ten problem po mojej stronie, usuwając Microsoft.AspNet.Membership.OpenAuth

Cristian Vintila
źródło
0

Napotykam ten problem podczas pracy nad aktualizacją wszystkich naszych bibliotek. ten link pomógł mi rozwiązać ten problem. https://www.devexpress.com/Support/Center/Question/Details/Q554890/the-could-not-load-file-or-assembly-dotnetopenauth-core-version-4-0-0-0-error- wiadomość-jest .

Specjalnie dodałem te przekierowania do mojego pliku 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>
Oscar Cauich
źródło
-2

Usuń wszelkie zależności Microsoft.Web.WebPages.OAuth z dowolnego miejsca w projektach.

Carmen
źródło
i Microsoft.Web.WebPages.OAuth.dll z odpowiedzi powyżej
felickz,