Aspnet Core Azure因HTTP错误502.5失败 - 进程失败

时间:2016-11-28 16:29:46

标签: asp.net-mvc azure .net-core

我正在尝试将aspnet核心应用程序部署到Azure。这似乎已经通过确定,但是当我尝试启动应用程序时,我会遇到以下错误...

此问题的常见原因:

申请流程未能启动 应用程序进程已启动但随后停止 应用程序进程已启动但无法侦听已配置的端口

故障排除步骤:

检查系统事件日志以获取错误消息 启用日志记录应用程序进程的stdout消息 将调试器附加到应用程序进程并检查

在这方面似乎有很多关于IIS的文章而不是Azure,所以我不知道接下来要去哪里看看。 Azure日志未指明任何内容。

Microsoft文档向我提供此信息......

  

平台与RID冲突

     

浏览器:HTTP错误502.5 - 进程失败

     

应用程序日志: - 应用程序错误:错误模块:KERNELBASE.dll   异常代码:0xe0434352错误模块路径:   C:\ WINDOWS \ system32 \ KERNELBASE.dll - IIS AspNetCore模块:失败   使用命令行'“dotnet”启动进程。\ my_application.dll'   (便携式应用)或'“PATH \ my_application.exe”'(自包含应用),   ErrorCode ='0x80004005'。

     

ASP.NET核心模块日志:未处理的异常:   System.BadImageFormatException:无法加载文件或程序集   'teststandalone.dll'或其依赖项之一。一次尝试   加载格式不正确的程序。

     

故障排除:

     

如果您发布了自包含的应用程序,请确认您没有   在project.json的buildOptions中设置一个与平台冲突的平台   发布RID。例如,不要指定x86和的平台   使用RID为win81-x64发布(dotnet发布-c Release -r   win81-64)。项目将在没有警告或错误的情况下发布但失败   在服务器上记录上述例外情况。

...但实际上并没有告诉我这些设置对于Azure应该是什么(或者如果它在那里是相关的),所以我不确定这是不是红鲱鱼。我没有在我的dotnet发布配置中指定-r开关。

我设法找到了一个事件日志,它抛出了一些重复记录的XML ......

  

无法使用命令行'“%LAUNCHER_PATH%”启动进程   %LAUNCHER_ARGS%',ErrorCode ='0x80070002'。

经过更多调查后,我发现自己需要更改%LAUNCHER_PATH%和%LAUNCHER_ARGS%值。我已尝试对web.config进行各种更改,但没有运气。我的web.config现在看起来像这样......

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->

  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="dotnet" arguments="site\wwwroot\Esoterix.Modle.Portalweb.dll" stdoutLogEnabled="true" stdoutLogFile="LogFiles\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
</configuration>

这些路径来自Azure部署的根目录,它似乎适用于stdout日志文件路径(我收到了错误报告)但不适用于应用程序本身。我仍然看到以下错误..

<Event>
    <System>
        <Provider Name="IIS AspNetCore Module"/>
        <EventID>1000</EventID>
        <Level>0</Level>
        <Task>0</Task>
        <Keywords>Keywords</Keywords>
        <TimeCreated SystemTime="2016-11-28T19:31:32Z"/>
        <EventRecordID>1514022203</EventRecordID>
        <Channel>Application</Channel>
        <Computer>RD0004FFD7108D</Computer>
        <Security/>
    </System>
    <EventData>
        <Data>Failed to start process with commandline '"dotnet" site\wwwroot\Esoterix.Modle.Portalweb.dll', ErrorCode = '0x80004005'.</Data>
    </EventData>
</Event>

重复4次

如果我查看我的标准输出,我有以下内容......

  

无法从[\?\ D:\ home \ site \ wwwroot \ hostpolicy.dll]加载dll,   HRESULT:0x800700C1

     

从中加载所需的库hostpolicy.dll时发生错误   [\ \ d?:\家\站点\ wwwroot的]

如果我尝试直接使用web配置运行exe ...

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->

  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="\\?\%home%\site\wwwroot\Esoterix.Modle.Portalweb.exe" arguments="" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
</configuration>

然后我的stdout给了我以下错误......

  

无法从[\?\ D:\ home \ site \ wwwroot \ hostfxr.dll]加载dll,   HRESULT:0x80070057

     

找到了库hostfxr.dll,但是从中加载了它   \?\ D:\ home \ site \ wwwroot \ hostfxr.dll失败

     

1 个答案:

答案 0 :(得分:1)

我通过添加对dotnet-publish-iis的引用来解决这个问题。

有关如何执行此操作的详细信息记录在https://github.com/aspnet/Hosting/issues/892

的github问题中