2017-02-22 20 views
3

Я пошел за этим tutorial, чтобы развернуть консольное приложение .NET Core на веб-службу Azure Web Service.Ошибка при загрузке hostpolicy.dll при развертывании приложения консоли .NET Core для Azure WebJobs

Мое приложение работает локально, без какой-либо вопрос (с DotNet 1.0.0-preview2-003131), но когда я пытаюсь запустить его из Azure консоли У меня есть следующее сообщение об ошибке:

Не удалось загрузить DLL из [D: \ Local \ VirtualDirectory0 \ сайт \ Wwwroot \ App_Data \ работа \ срабатывает \ PopcornExportWebJob \ hostpolicy.dll] HRESULT: 0x800700C1

ошибка при загрузке библиотеки требуется hostpolicy.dll из [D: \ local \ VirtualDirectory0 \ site \ wwwroot \ app_data \ jobs \ triggered \ PopcornExportWebJob]

Версия Azure dotnet - это 1.0.0-rc4-004771, а файл hostpolicy.dll совпадает с локальным. Фактически, когда я загружаю zip моего развертывания из Azure, и когда я запускаю его локально, он работает нормально. Но он не работает в среде Azure.

Кроме того, вот мой project.json:

{ 
     "publishOptions": { 
     "include": [ 
      "run.cmd" 
     ] 
     }, 
     "buildOptions": { 
     "emitEntryPoint": true, 
     "copyToOutput": "appsettings.json" 
     }, 
     "copyright": "bbougot", 
     "dependencies": { 
     "FubarCoder.RestSharp.Portable.Core": "4.0.7", 
     "FubarCoder.RestSharp.Portable.HttpClient": "4.0.7", 
     "Microsoft.ApplicationInsights.AspNetCore": "2.0.0", 
     "Microsoft.Extensions.Configuration": "1.1.0", 
     "Microsoft.Extensions.Configuration.Json": "1.1.0", 
     "Microsoft.Extensions.DependencyInjection": "1.1.0", 
     "Microsoft.Extensions.Logging": "1.1.0", 
     "Microsoft.Extensions.Logging.Console": "1.1.0", 
     "Microsoft.NETCore.App": "1.1.0", 
     "MongoDB.Driver": "2.4.2", 
     "StructureMap.Microsoft.DependencyInjection": "1.3.0" 
     }, 
     "description": "Popcorn Api Exporter", 
     "frameworks": { 
     "netcoreapp1.1": { 
      "imports": [ 
      "portable-net45+win8" 
      ] 
     } 
     }, 
     "runtimes": { 
     "win10-x64": {} 
     }, 
     "scripts": { 
     "postpublish": [ "7za.exe a -tzip PopcornExport.zip .\\bin\\Release\\PublishOutput\\*", 
         ".\\WAWSDeploy.exe .\\PopcornExport.zip .\\popcornexport.PublishSettings /t app_data\\jobs\\triggered\\PopcornExportWebJob /v /d" ] 
     }, 
     "title": "PopcornExport", 
     "version": "1.0.0-*" 
    } 

Я должен был добавить узел автономной работы (win10-x64 в противном случае приложение не может выполняться локально). Но веб-служба Azure работает на Windows Server 2012. Может быть, это проблема?

Что я пропустил?

+0

Похожие вопросы [библиотека хо stpolicy.dll не найден] (// stackoverflow.com/q/38085430) –

ответ

8

Хорошо, я понял это.

Если вы хотите развернуть приложение с ядром dotnet для Azure Web Service, включите среду выполнения «win7-x86», если вы используете приложение в режиме 32-разрядной платформы.

Для визуального решения Студия 2015, ваш project.json должен включать в себя:

"runtimes": { 
    "win10-x64": {}, 
    "win7-x86": {} //IMPORTANT FOR AZURE DEPLOY 
    }, 

Или, если вы уже мигрировали в Visual Studio 2017, ваш .csproj должен включать это в PropertyGroup:

<RuntimeIdentifiers>win10-x64;win7-x86</RuntimeIdentifiers> 

Кроме того, ваш публиковать профиль должен включать в себя то же самое:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <PublishProtocol>FileSystem</PublishProtocol> 
    <Configuration>Release</Configuration> 
    <TargetFramework>netcoreapp1.1</TargetFramework> 
    <PublishDir>bin\Release\PublishOutput</PublishDir> 
    <RuntimeIdentifier>win7-x86</RuntimeIdentifier> // IMPORTANT 
    </PropertyGroup> 
</Project> 
+0

Пожалуйста, помогите отметить это как ответ, который поможет большему количеству сообществ, имеющих подобную проблему. –

+1

Использование VS2017, это решение сработало - НО мне пришлось отменить порядок идентификаторов времени выполнения, поскольку он продолжал дефолтировать конфигурацию win10 и когда я изменил его в пользовательском интерфейсе - до тех пор, пока я не изменил csproj на: ' win7- x86; win10-x64 ' – Steveland83

+0

Этот ответ спас мой бекон сегодня ... +1 Спасибо! Мне показалось странным, что win10-x64 помешал правильной связи с нашей БД. Почему Windows 10 не будет официально поддерживаемой версией Azure? –

Смежные вопросы