Не удалось загрузить тип «System.Runtime.Remoting.Messaging.CallContext» при вызове драйвера C # Mongo для .NET Core - PullRequest
0 голосов
/ 02 мая 2019

Я обновляю свое веб-приложение с версии ASP.NET MVC .NET Framework до ASP.NET Core. Я обработал все ошибки сборки C # и Razor, и теперь я пытаюсь запустить приложение в первый раз. Когда я делаю какие-либо вызовы в драйвер C # MongoDB:

public static Analytics Find(Enums.Platform platform, DateTime date) {
            var builder = Filter;
            var filters = builder.Eq("Platform", platform) & builder.Eq("Date", date);
            return Collection().Find(filters).FirstOrDefault();// Exception thrown here.
        }

Это ошибки:

System.TypeLoadException HResult = 0x80131522 Сообщение = Не удалось загрузить введите 'System.Runtime.Remoting.Messaging.CallContext' из сборки 'mscorlib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089. Источник = MongoDB.Driver.Core
StackTrace: в MongoDB.Driver.Core.Events.EventContext.AsyncLocal 1.get_Value() at MongoDB.Driver.Core.Events.EventContext.BeginOperation(Nullable 1 идентификатор операции) в MongoDB.Driver.Core.Operations.FindCommandOperation 1.Execute(IReadBinding binding, CancellationToken cancellationToken) at MongoDB.Driver.Core.Operations.FindOperation 1.Execute (IReadBinding обязательный, CancellationToken CancellationToken) в MongoDB.Driver.OperationExecutor.ExecuteReadOperation [TResult] (IReadBinding привязка, IReadOperation 1 operation, CancellationToken cancellationToken) at MongoDB.Driver.MongoCollectionImpl 1.ExecuteReadOperation [TResult] (IClientSessionHandle сеанс, IReadOperation 1 operation, ReadPreference readPreference, CancellationToken cancellationToken) at MongoDB.Driver.MongoCollectionImpl 1.ExecuteReadOperation [TResult] (IClientSessionHandle сеанс, IReadOperation 1 operation, CancellationToken cancellationToken) at MongoDB.Driver.MongoCollectionImpl 1.FindSync [TProjection] (IClientSessionHandle сеанс, FilterDefinition 1 filter, FindOptions 2 варианта, Отмена взята Отмена взята) в MongoDB.Driver.MongoCollectionImpl 1.<>c__DisplayClass41_0 1.b__0 (IClientSessionHandle сеанс) в MongoDB.Driver.MongoCollectionImpl 1.UsingImplicitSession[TResult](Func 2 func, CancellationToken CancellationToken) в MongoDB.Driver.MongoCollectionImpl 1.FindSync[TProjection](FilterDefinition 1 фильтр, FindOptions 2 options, CancellationToken cancellationToken)<br> at MongoDB.Driver.FindFluent 2.ToCursor (CancellationToken CancellationToken) в MongoDB.Driver.IAsyncCursorSourceExtensions.FirstOrDefault [TDocument] (IAsyncCursorSource 1 source, CancellationToken cancellationToken) at MongoDB.Driver.IFindFluentExtensions.FirstOrDefault[TDocument,TProjection](IFindFluent 2 найти, Отмена взята Отмена отменена) в Housters.Data.DataAccess.AnalyticsData.Find (платформа платформы, DateTime date) в C: \ Housters \ Data \ DataAccess \ Common \ AnalyticsData.cs: строка 22 в Housters.Business.Services.Common.AnalyticsService.Get (Platform платформа, DateTime date) в C: \ Housters \ Business \ Services \ Common \ AnalyticsService.cs: строка 31 в Housters.Business.Services.Common.AnalyticsService.Log (Platform платформа, строковый идентификатор устройства, тип AnalyticsEventType, логическое значение onlyLogIfSignedUp) в C: \ Housters \ Business \ Services \ Common \ AnalyticsService.cs: строка 19 в Housters.Web.Controllers.HomeController.Index () в C: \ Housters \ Web \ Controllers \ HomeController.cs: строка 8 в Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute (Объект target, параметры Object []) в Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute (IActionResultTypeMapper картограф, исполнитель ObjectMethodExecutor, контроллер объекта, объект [] аргументы) в Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__12.MoveNext ()

Я не совсем понимаю, что происходит, потому что MongoDB поддерживает .NET Core, а System.Runtime.Remoting.Messaging.CallContext - это метод .NET Framework, а .NET Core его не поддерживает. Я видел другой SO-поток , где OP столкнулся с этой проблемой, однако его проблема заключалась в том, что он не использовал последнюю версию драйвера MongoDB C #. Я использую последний драйвер, 2.8.0, в библиотеке классов .NET Standard (2.0.3).

enter image description here

1 Ответ

1 голос
/ 02 мая 2019

Nupkg - это, по сути, zip-файл с несколькими версиями DLL и некоторыми метаданными.

В случае драйвера Mongo есть библиотеки DLL для двух целевых сред

  • .NET Framework 4.5.2
  • .NET Standard 1.5

При установке пакета NuGet выбирается dll, соответствующая вашему проекту. Я предполагаю, что вы все еще ссылаетесь на библиотеку DLL .NET Framework, несмотря на использование пакета NuGet, который поддерживает стандарт .NET.

Попробуйте переустановить пакет NuGet. Убедитесь, что DLL, которая попадает в вашу корзину, соответствует .NET Standard версии.

...