1 Вопрос: Не удалось загрузить тип «System.Runtime.Remoting.Messaging.CallContext» при вызове драйвера C # Mongo для .NET Core

вопрос создан в Thu, May 2, 2019 12:00 AM

Я обновляю свое веб-приложение с версии 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.AsyncLocal1.get_Value() at MongoDB.Driver.Core.Events.EventContext.BeginOperation(Nullable1   идентификатор операции) в   MongoDB.Driver.Core.Operations.FindCommandOperation1.Execute(IReadBinding binding, CancellationToken cancellationToken) at MongoDB.Driver.Core.Operations.FindOperation1.Execute (IReadBinding   обязательный, CancellationToken CancellationToken) в   MongoDB.Driver.OperationExecutor.ExecuteReadOperation [TResult] (IReadBinding   binding, IReadOperation1 operation, CancellationToken cancellationToken) at MongoDB.Driver.MongoCollectionImpl1.ExecuteReadOperation [TResult] (IClientSessionHandle   сеанс, IReadOperation1 operation, ReadPreference readPreference, CancellationToken cancellationToken) at MongoDB.Driver.MongoCollectionImpl1.ExecuteReadOperation [TResult] (IClientSessionHandle   сеанс, IReadOperation1 operation, CancellationToken cancellationToken) at MongoDB.Driver.MongoCollectionImpl1.FindSync [TProjection] (IClientSessionHandle   сеанс, опции FilterDefinition1 filter, FindOptions2,   CancellationToken) отмена   MongoDB.Driver.MongoCollectionImpl1.<>c__DisplayClass41_01.b__0 (IClientSessionHandle   сеанс) в   MongoDB.Driver.MongoCollectionImpl1.UsingImplicitSession[TResult](Func2   func, CancellationToken CancellationToken) в   MongoDB.Driver.MongoCollectionImpl1.FindSync[TProjection](FilterDefinition1   фильтр, FindOptions2 options, CancellationToken cancellationToken)
at MongoDB.Driver.FindFluent
2.ToCursor (CancellationToken   CancellationToken) в   MongoDB.Driver.IAsyncCursorSourceExtensions.FirstOrDefault [TDocument] (IAsyncCursorSource1 source, CancellationToken cancellationToken) at MongoDB.Driver.IFindFluentExtensions.FirstOrDefault[TDocument,TProjection](IFindFluent2   найти, Отмена взята Отмена отменена) в   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).

 введите описание изображения здесь

    
0
  1. Вы пробовали MongoDb.Driver 2.9.0-beta1
    2019-05-02 15: 01: 33Z
  2. Ваш проект «Данные» является «библиотекой классов .NET Standard (2.0.3)» - верно? А как насчет вашего веб-проекта?
    2019-05-02 15: 05: 39Z
1 ответ                              1                         

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 версии.

    
1
2019-05-02 20: 19: 50Z
источник размещен Вот