базовое приложение do tnet, развернутое на локальной службе fabri c выдает исключение речевых служб Microsoft - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть приложение do tnet core 2.2, которое использует Microsoft Cognitive Voice Services версии 1.8.0. Приложение развернуто на одном узле локальной службы кластера fabri c.

Я добавил службу поддержки fabri c с использованием Visual Studio 2019 Щелкните правой кнопкой мыши по проекту root -> Добавить -> Поддержка контейнера Orchestrator -> Служба Fabri c

После успешного развертывания, когда я нажимаю API контроллера, я получаю следующее исключение

> **System.DllNotFoundException: Unable to load DLL
> 'Microsoft.CognitiveServices.Speech.core.dll' or one of its
> dependencies: The specified module could not be found. (Exception from
> HRESULT: 0x8007007E)**    at
> Microsoft.CognitiveServices.Speech.Dialog.Internal.DialogServiceConfig.bot_framework_config_from_subscription(IntPtr&
> config, String subscription, String region)    at
> Microsoft.CognitiveServices.Speech.Dialog.BotFrameworkConfig.FromSubscription(String
> subscription, String region)    at
> WebApi.Controllers.MyController..ctor() in MyController.cs:line 71   
> at lambda_method(Closure , IServiceProvider , Object[] )    at
> Microsoft.AspNetCore.Mvc.Controllers.ControllerActivatorProvider.<>c__DisplayClass4_0.<CreateActivator>b__0(ControllerContext
> controllerContext)    at
> Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass5_0.<CreateControllerFactory>g__CreateController|0(ControllerContext
> controllerContext)    at
> Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State&
> next, Scope& scope, Object& state, Boolean& isCompleted)    at
> Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
> at
> Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
> at
> Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext
> context)    at
> Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next,
> Scope& scope, Object& state, Boolean& isCompleted)    at
> Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
> at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()   
> at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext
> httpContext)    at
> Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext
> httpContext)    at
> Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext
> httpContext)    at
> Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext
> context)    at
> Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext
> context)

Я вижу папку docker publi sh в основном приложении do tnet. Папка Publi sh имеет среды выполнения win-x86 и win-x64 , содержащие собственные Microsoft.CognitiveServices.Speech.core.dll & Microsoft.CognitiveServices.Speech.extension.kws.dll .

1 Ответ

0 голосов
/ 28 апреля 2020

Мне удалось обойти эту проблему, как описано здесь .

Похоже, проблема в среде выполнения VC ++. Эти библиотеки необходимы для работы с Microsoft Speech API, но по умолчанию они не копируются в контейнер. Итак, я обновил свой docker файл, чтобы скопировать dll среды выполнения VC ++ в контейнер, и это сработало.

...