将ASP.NET 5 Web应用程序部署到Azure Web App时,我收到500内部服务器错误。
如何获取此异常的详细信息和堆栈跟踪?
我做了以下但没有运气:
启动时使用诊断错误页面:
app.UseErrorPage();
在Azure门户中设置ASPNET_ENV
:
使用DNX beta 6。
答案 0 :(得分:26)
如果这对某人有帮助,我发现如果您正在使用ASP.NET RC1并且您正在使用Azure WebApps并添加名为Hosting:Environment
的应用程序设置将显示development
服务器500错误的堆栈跟踪的值。
要使其工作,Startup.cs中的Configure方法需要在使用开发环境时使用Developer Exception页面。例如:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
// etc
}
答案 1 :(得分:4)
根据this post(感谢Muhammad),我应该能够通过编辑服务器的web.config来获取Azure上的运行时错误(非常正确,Celt)。
不幸的是,这没有用 - 没有详细的例外。
我做了一些挖掘并找到了这些“详细错误”日志:
这是他们所包含的内容:
尝试在favicon.ico
处解决D:\home\site\wwwroot\favicon.ico
时似乎出现了问题。
那个地方确实没有图标。我纠正了这个,但仍然是同样的问题。事实上,我从来没有过一个图标,这曾经有用过。
最后,我删除了Azure门户中的整个Web应用程序并重新发布... TADA,它再次有效。
答案 2 :(得分:3)
当您从运行ASP.NET 5的Azure Web应用程序获取HTTP 500并且无法获得详细的错误输出时,根据我的经验,它有两个原因之一:
为了处理第一类问题,您最好编写一个错误处理程序,以便在某处记录启动错误(我们使用Raygun.io,您的需求和首选项应该确定您的解决方案)。
对于第二种类型,我提出的最好的方法是通过网站的诊断功能 - 您可以访问Windows服务器事件日志,它将告诉您运行时是否被堵塞。
答案 3 :(得分:2)
尝试在Web.config文件中将customErrors
模式设置为off,如下所示:
<system.web>
<customErrors mode="Off" />
</system.web>
答案 4 :(得分:2)
您的startup.cs有一些运行时代码与Azure不一致。通过移动app.UseDeveloperExceptionPage()强制开发人员友好异常页面进行渲染;到配置(...)的开头。将更新的代码发布到Azure,重新加载主页和异常现在将有所帮助。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseDeveloperExceptionPage();
...
}
答案 5 :(得分:1)
我有完全相同的问题 - 总是得到500并且从未见过最小的日志或信息有什么问题。即使在评论Startup.cs中的所有内容并简单地访问静态文件后,我也得到500(尽管有时候静态文件 正确地提供,但它从发布更改为发布到同一个应用程序)。
我认为部署中的某些文件已损坏,而azure未检测到它。或者也许服务器上还有一些文件在运行时引起冲突 - 下次我认为更改发布配置文件也不值得在服务器上保留额外文件(默认情况下它们不会被删除)。
我最终删除并重新创建了应用程序,解决了这个问题。
答案 6 :(得分:0)
如果你仍然像我一样使用旧版本的DNX堆栈(使用beta5,这是Visual Studio 2015附带的版本),那么他们的设置并没有真正记录好。我相信从那以后这已经发生了变化,但是这里有你必须放在web.config中的内容:
<appSettings>
<add key="ASPNET_DETAILED_ERRORS" value="true" />
</appSettings>