我在azure上托管一个asp.net 5应用程序,代码是针对beta8编译的,应用程序在本地环境中运行良好,当我在azure网站上发布代码时。我得到一个常见错误"指定的CGI应用程序遇到错误,服务器终止了该过程。"
答案 0 :(得分:9)
我可以通过从wwwroot下的web.config文件中删除forwardWindowsAuthToken
来解决此问题。
httpPlatform
删除forwardWindowsAuthToken="true/false"
属性重新部署和我的工作正常。
请参阅此处https://github.com/aspnet/Hosting/issues/364进行大量讨论
答案 1 :(得分:7)
对我们来说,修复是UseIISIntegration()
上的WebHostBuilder
。
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseKestrel()
.UseIISIntegration() // Necessary for Azure.
.UseStartup<Program>()
.Build();
host.Run();
}
我们的 web.config 如下所示:
<?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>
我们的 project.json 如下所示:
{
"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%"
]
}
}
我们的 nuget.config 如下所示:
<?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>
答案 2 :(得分:3)
如果代码中有无限循环,也会发生这种情况。
答案 3 :(得分:3)
以下是我遇到的相同问题。
答案 4 :(得分:2)
我在使用.NET 5.4.2部署ASP.core应用程序时遇到了这个错误。修复是部署到一个新的应用程序服务实例。我的猜测是,之前部署中存在一些使用不同框架版本的垃圾。
答案 5 :(得分:1)
我最近遇到了同样的问题,并且可以通过在 web.config 中设置 requestTimeout
来解决此问题:
<?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>
答案 6 :(得分:0)
我在azure app服务中遇到此问题,因为asp.net核心版本是预览版本,因此我将NuGet的asp.net核心版本更新为2.0.1并重新部署该应用程序。
该应用再次运作。
答案 7 :(得分:0)
我正在使用部署到Azure Web应用程序的.NET Core 2.1和EF Core。当我从使用具有数据库所有者权限的数据库帐户切换到受限数据库帐户时,收到此错误。我怀疑EF需要启动应用程序时缺少的一项权利。
答案 8 :(得分:0)
我遇到了同样的错误。在搜索了一些解决方案之后,我更改了代码,将异步方法调用替换为非异步方法调用,原因是线程池可能超出了允许的容量。这没有用。然后,我将web.config中的请求超时增加到20分钟,此问题已解决。
将以下字符串添加到web.config文件中。
requestTimeout="00:20:00"
为
<aspNetCore processPath="dotnet" arguments=".\API.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" requestTimeout="00:20:00" />
答案 9 :(得分:0)
今天我们遇到了同样的问题。在我们的情况下,这是由Debug.Assert(...)
失败引起的。
答案 10 :(得分:-2)
对于我们来说,它与代码无关,需要重新部署appservice,然后重新启动