Azure: HTTP Error 500.31 – ANCM Failed to Find Native Dependencies

Issue:

After enabled Core 5 web.config to logging, the site display ANCM Failed error. What’s happening?

HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
Common solutions to this issue:
The specified version of Microsoft.NetCore.App or Microsoft.AspNetCore.App was not found.
Specific error detected by ANCM:
Cannot use file stream for [C:\home\site\wwwroot\projname.runtimeconfig.json]: No such file or directory Invalid runtimeconfig.json [C:\home\site\wwwroot\projname.runtimeconfig.json] [C:\home\site\wwwroot\projname.runtimeconfig.dev.json]
Troubleshooting steps:
• Check the system event log for error messages
• Enable logging the application process' stdout messages
• Attach a debugger to the application process and inspect
For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028526

My web.config settings with stdoutLogEnabled=”true”:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- To customize the asp.net core module uncomment and edit the following section. 
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
<system.webServer>
<handlers>
<remove name="aspNetCore" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</configuration>

 

Environment:

  • Azure App Service Hosting
  • .Net Core 5
  • Added custom web.config to the project

Resolution:

The issue is Azure App Service is expecting the log folder to be under Azure LogFiles folder. To correct this issue, just point stdoutLogFile=”.\logs\stdout” to stdoutLogFile=”\\?\%home%\LogFiles\stdout“. If you use web config transformation, change to stdoutLogFile=”\\?\%home%\LogFiles\stdouton web.release.config with xdt:Transform=”Replace” attribute.

Step-by-step instructions:-

On web.config, it should looks like this:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- To customize the asp.net core module uncomment and edit the following section. 
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
<system.webServer>
<handlers>
<remove name="aspNetCore" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</configuration>

Note: On the Azure folder, %LAUNCHER_PATH% should have replaced with dotnet and %LAUNCHER_ARGS% replaced with .\projname.dll

Note 2: Make sure your project have logs folder for logging in your Visual Studio IDE.

On web.Release.config, it should looks like this:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!-- To customize the asp.net core module uncomment and edit the following section. 
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
<system.webServer>
<handlers>
<remove name="aspNetCore" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\projname.dll" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout" hostingModel="inprocess" xdt:Transform="Replace" />
</system.webServer>
</configuration>

 

Troubleshoot:

One option to test is changing modules=”AspNetCoreModuleV2″ to modules=”AspNetCoreModule” and restart the App Service. You should see the logging is working with older module.

You may turn on debug file handler with following handler settings to see more detail on the core startup error:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- To customize the asp.net core module uncomment and edit the following section. 
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
<system.webServer>
<handlers>
<remove name="aspNetCore" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout" hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
<handlerSetting name="debugLevel" value="FILE,TRACE" />
</handlerSettings>
</aspNetCore> 
</system.webServer>
</configuration>

 

Reference:

ASP.NET Core 5.0 Web.Config file

ASP.Net Core Hosting 500 Internal Server Error Issues

 

Issue:

Server Error
500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.

Or

HTTP Error 502.5 - Process Failure


Common causes of this issue: 
• The application process failed to start 
• The application process started but then stopped 
• The application process started but failed to listen on the configured port


Troubleshooting steps: 
• Check the system event log for error messages 
• Enable logging the application process' stdout messages 
• Attach a debugger to the application process and inspect


For more information visit:  https://go.microsoft.com/fwlink/?LinkID=808681

Browser showing 500 Internal Server Error after published my ASP.Net Core application to the Windows IIS web server.

Environment:

Windows 2016 Server with IIS, ASP.NET Core version 2.0.7

Resolution:

Make sure “Hosting Bundle Installer” is installed which includes Windows Server Hosting and .Net Core Runtime version of your choice. You can do this even you had installed either one of them. These two pieces of software are needed to run ASP.Net Core Application.

Option 1:-

1) install “Hosting Bundle Installer” file version 2.0.7 from https://www.microsoft.com/net/download/dotnet-core/runtime-2.0.7 or latest version

https://www.microsoft.com/net/download/dotnet-core/runtime-2.0.7

2) browse to your web site and see if it fixes the issue

Notes:

  1. You can always download the latest version of .Net Core Runtime from https://www.microsoft.com/net/download/all
  2. Double check if you have installed both software under Program and Features

    Hosting Bundle Installer version 2.0.6
  3. To enable logging the application process’ stdout messages, open file web.config and change stdoutLogEnabled attribute from false to true as shown below
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        ...
        <aspNetCore processPath="dotnet" arguments=".\Ms.App.Web.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
      </system.webServer>
    </configuration>
  4. To see which version you need, you could check a file [YourProjName].runtimeconfig.json
    {
      "runtimeOptions": {
        "tfm": "netcoreapp2.0",
        "framework": {
          "name": "Microsoft.AspNetCore.App",
          "version": "2.0.6"
        }
      }
    }