2017-02-22 44 views
3

我已按照此tutorial將.NET Core控制檯應用程序部署到Azure Web Service WebJob。將.NET Core控制檯應用程序部署到Azure時加載hostpolicy.dll時出錯WebJobs

我的應用程序沒有任何問題,在本地運行(與DOTNET 1.0.0-preview2-003131),但是當我嘗試從Azure的控制檯運行它,我有以下錯誤:

無法加載從dll的[d:\本地\ VirtualDirectory0 \網站\ wwwroot的\ app_data文件\ \工作觸發\ PopcornExportWebJob \ hostpolicy.dll] HRESULT:0x800700C1

時發生錯誤,同時從[d加載所需的庫hostpolicy.dll: \ local \ VirtualDirectory0 \ site \ wwwroot \ app_data \ jobs \ triggered \ PopcornExportWebJob]

Azure dotnet的版本是1.0.0-rc4-004771並且hostpolicy.dll文件與我在本地使用的版本相同。事實上,當我從Azure下載部署的zip文件並在本地運行它時,它工作正常。但它在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-64,否則應用程序無法在本地運行)。但是,Azure Web Service正在Windows Server 2012上運行。可能會有問題嗎?

我錯過了什麼?

+0

類似的問題[庫豪stpolicy.dll未找到](// stackoverflow.com/q/38085430) –

回答

8

好吧,我已經想通了。

如果要在Azure Web服務中部署一個dotnet核心應用程序,請在32位平臺模式下運行應用程序時,包括運行時「win7-x86」。

對於一個Visual Studio 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版本? –

相關問題