当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET 5(RC1)Bad Gateway:指定的CGI应用程序遇到错误,服务器终止了该进程

如何解决《ASP.NET5(RC1)BadGateway:指定的CGI应用程序遇到错误,服务器终止了该进程》经验,为你挑选了1个好方法。

我在Azure Web App中运行ASP.NET 5项目.

当使用大约1.5mb或更大的文件(表单数据)调用API端点时,我会502 Bad Gateway在响应主体中看到以下消息:

指定的CGI应用程序遇到错误,服务器终止了该进程.

奇怪的是,当上传较小的文件时,通话工作正常.它似乎产生了502大约1.5mb的标记,但它并不完全一致.

我正在使用ASP.NET 5 RC1.

在Startup.cs中,我app.UseIISPlatformHandler();作为方法中的第一个中间件添加Configure().

project.config:

{
  ...
  "webroot": "wwwroot",
  "dependencies": {
    "Microsoft.ApplicationInsights.AspNet": "1.0.0-rc1",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
    "Microsoft.AspNet.Authorization": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.Abstractions": "6.0.0-rc1-final",
    "Microsoft.AspNet.Authentication.JwtBearer": "1.0.0-rc1-final",
    "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc1-final",
    "Newtonsoft.Json": "6.0.6",
    "WindowsAzure.Storage": "5.0.2",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    ...
  },
  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  },
  "frameworks": {
    "dnx451": { }
  },
}

编辑:

正如Jessevl所建议的那样,抛出以下异常:

System.IO.InvalidDataException:Microsoft.AspNet.Server.Kestrel.Http.MessageBody.ForContentLength.d__3.MoveNext()中的请求内容的意外结束---从抛出异常的上一个位置开始的堆栈跟踪结束---在系统中Microsoft.AspNet.WebUtilities.FileBufferingReadStream.d__27.MoveNext()中的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)---来自先前位置的堆栈跟踪结束抛出异常的地方---在Microsoft.AspNet.WebUtilities.BufferedReadStream.d__39.MoveNext()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)中 - - 从抛出异常的先前位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.H上的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处 andleNonSuccessAndDebuggerNotification(任务task)在Microsoft.AspNet.WebUtilities.MultipartReaderStream.d__36.MoveNext()---从先前的位置堆栈跟踪,其中引发异常---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(工作任务)结束在Microsoft.AspNet.WebUtilities.StreamHelperExtensions.d__0.MoveNext()中的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)---从抛出异常的上一个位置的堆栈跟踪结束---在System.Runtime.位于Microsoft.AspNet.Http.Features.Internal.FormFeature的System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务). d__12.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束---在Sys的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)tem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task)在Microsoft.AspNet.Mvc.ModelBinding.FormValueProviderFactory.d__1.MoveNext()---从先前的位置堆栈跟踪,其中引发异常---在System.Runtime结束位于Microsoft.AspNet.Mvc.ModelBinding.CompositeValueProvider.d__2.MoveNext()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)---来自先前位置的堆栈跟踪结束抛出异常的地方 - 在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(任务任务)at at Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__49.MoveNext()---从抛出异常的上一个位置开始的堆栈跟踪结束---在Microsoft.AspNet.Mvc.Contro llers.FilterActionInvoker.d__44.MoveNext()---从先前的位置堆栈跟踪其中的例外是在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification抛出---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(工作任务)结束Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler.d__6.MoveNext()中的(任务任务)---从抛出异常的先前位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) )来自Microsoft.AspNet.Mvc.Routing.InnerAttributeRoute.d__10.MoveNext()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)---从抛出异常的上一个位置开始的堆栈跟踪结束---在系统中.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务task)在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(工作任务)在Microsoft.AspNet.Routing.RouteCollection.d__9.MoveNext() - - 抛出异常的先前位置的堆栈跟踪结束---在Microsoft.AspNet.Builder的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处.RouterMiddleware.d__4.MoveNext()---从先前的位置堆栈跟踪其中的例外是在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification抛出---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(工作任务)结束( Microsoft.ApplicationInsights.AspNet.RequestTrackingMiddleware.d__4.MoveNext()中的任务任务---从抛出异常的先前位置开始的堆栈跟踪结束---在系统的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处Microsoft.AspNet.IISPlatformHandler.IISPlatformHandlerMiddleware.d__8.MoveNext()---堆栈结束时的.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)抛出异常的先前位置的比赛---在Microsoft.AspNet.Hosting.Internal.RequestServicesContainerMiddleware的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)中. d__3.MoveNext()---从先前的位置堆栈跟踪其中的例外是在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task)抛出---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(工作任务)结束在Microsoft.AspNet.Hosting.Internal.HostingEngine.<> c__DisplayClass32_0.d.MoveNext()---从抛出异常的上一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) )Microsoft.AspNet.Server.Kestrel.Http.Frame.d__79.MoveNext()上的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

小智.. 5

当前版本的Asp.Net 5似乎存在某种问题,其中在Azure Web App中运行时返回的错误始终是

指定的CGI应用程序遇到错误,服务器终止了该进程.

无论实际错误是什么.例如,当我在代码中的某个位置连接到Azure Event Hub的连接字符串不正确时,我收到此错误.

您可以尝试远程调试(请参阅此处)或使用Kudu扫描您的日志,您可以在[websitename] .scm.azurewebsites.net上找到(将[websitename]替换为[websitename] .azurewebsites.net中通常的内容)或Visual Studio服务器资源管理器.

杰西



1> 小智..:

当前版本的Asp.Net 5似乎存在某种问题,其中在Azure Web App中运行时返回的错误始终是

指定的CGI应用程序遇到错误,服务器终止了该进程.

无论实际错误是什么.例如,当我在代码中的某个位置连接到Azure Event Hub的连接字符串不正确时,我收到此错误.

您可以尝试远程调试(请参阅此处)或使用Kudu扫描您的日志,您可以在[websitename] .scm.azurewebsites.net上找到(将[websitename]替换为[websitename] .azurewebsites.net中通常的内容)或Visual Studio服务器资源管理器.

杰西

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有