我在Azure Web App中运行ASP.NET 5项目.
当使用大约1.5mb或更大的文件(表单数据)调用API端点时,我会在响应主体中获得502 Bad Gateway并带有以下消息:
The specified CGI application encountered an error and the server
terminated the process.
奇怪的是,当上传较小的文件时,通话工作正常.它似乎产生了大约1.5mb标记的502,但它并不完全一致.
我正在使用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: Unexpected end of request content at
Microsoft.AspNet.Server.Kestrel.Http.MessageBody.ForContentLength.d__3.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.WebUtilities.FileBufferingReadStream.d__27.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.WebUtilities.BufferedReadStream.d__39.MoveNext() —
End of stack trace from previous location where exception was thrown
— at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.WebUtilities.MultipartReaderStream.d__36.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.WebUtilities.StreamHelperExtensions.d__0.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task
task) at
Microsoft.AspNet.Http.Features.Internal.FormFeature.d__12.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.Mvc.ModelBinding.FormValueProviderFactory.d__1.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.Mvc.ModelBinding.CompositeValueProvider.d__2.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task
task) at
Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__49.MoveNext()
— End of stack trace from previous location where exception was thrown — at
Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__44.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler.d__6.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.Mvc.Routing.InnerAttributeRoute.d__10.MoveNext() —
End of stack trace from previous location where exception was thrown
— at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at Microsoft.AspNet.Routing.RouteCollection.d__9.MoveNext() —
End of stack trace from previous location where exception was thrown
— at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at Microsoft.AspNet.Builder.RouterMiddleware.d__4.MoveNext() —
End of stack trace from previous location where exception was thrown
— at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.ApplicationInsights.AspNet.RequestTrackingMiddleware.d__4.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.IISPlatformHandler.IISPlatformHandlerMiddleware.d__8.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.Hosting.Internal.RequestServicesContainerMiddleware.d__3.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at
Microsoft.AspNet.Hosting.Internal.HostingEngine.<>c__DisplayClass32_0.d.MoveNext()
— End of stack trace from previous location where exception was thrown — at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) at Microsoft.AspNet.Server.Kestrel.Http.Frame.d__79.MoveNext()
当前版本的Asp.Net 5似乎存在某种问题,其中在Azure Web App中运行时返回的错误始终是
The specified CGI application encountered an error and the server terminated the process.
无论实际错误是什么.例如,当我在代码中的某个位置连接到Azure Event Hub的连接字符串不正确时,我收到此错误.
您可以尝试远程调试(参见here)或使用Kudu扫描您的日志,您可以在[websitename] .scm.azurewebsites.net上找到(用[websitename]中的[websitename]替换[websitename] .zurewebsites.net)或Visual Studio服务器资源管理器.
杰西