I am hosting a asp.net 5 application on azure, the code is complied for beta8, the application runs fine on the local environment and when i publish the code on the azure site. i get a common error "The specified CGI application encountered an error and the server terminated the process."
11 Answers
I was able to solve this issue by removing forwardWindowsAuthToken
from the web.config file under wwwroot.
- Navigate to src/ProjectName/wwwroot
- Open the web.config
- In the
httpPlatform
remove theforwardWindowsAuthToken="true/false"
property
Redeploy and mine worked fine.
See here https://github.com/aspnet/Hosting/issues/364 for plenty of discussion
Short Answer
For us the fix was to to UseIISIntegration()
on the WebHostBuilder
.
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseKestrel()
.UseIISIntegration() // Necessary for Azure.
.UseStartup<Program>()
.Build();
host.Run();
}
More Details
Our web.config looks like this:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore"
path="*"
verb="*"
modules="AspNetCoreModule"
resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%"
arguments="%LAUNCHER_ARGS%"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
Our project.json looks like this:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0-*",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0-*"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"netcoreapp1.0": {}
},
"buildOptions": {
"emitEntryPoint": true
},
"publishOptions": {
"include": [
"web.config"
]
},
"scripts": {
"postpublish": [
"dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
]
}
}
Our nuget.config looks like this:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="AspNetVNext" value="https://www.myget.org/F/aspnetcidev/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
I recently had the same issue and was able to solve it by setting the requestTimeout
within the web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\PROJECT.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" requestTimeout="00:30:00"/>
</system.webServer>
</location>
</configuration>
I was facing the same issue following are steps how I resolved.
- My application was .NET CORE 2.2 and I was deploying in the Azure web app.
- Right Click on the project and click on the publish button.
- Select the publish profile which you downloaded from Azure.
- Next, change the deployment mode under Summary to Self-Contained.
- Now click on publish button it should work.
I got the same error. After searching some solutions, I changed the code, replacing the async method calls with non-async ones, regarding the notes that thread pool might exceed the allowed capacity. This did not work. Then I increased the request timeout in web.config to 20 minutes and it is resolved.
Add the string below in web.config file.
requestTimeout="00:20:00"
as
<aspNetCore processPath="dotnet" arguments=".\API.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" requestTimeout="00:20:00" />