Reputation: 4592
I have an ASP.NET 5 solution with a website and several project libraries. I'm using MVC 6 and Entity Framework 7. Locally the app is working fine and until today it was working also on Azure deployed as an Azure Website.
But today after the latest deployment on Azure I got an error 500 like this on the startup (still working fine locally):
I tried to get more details by :
It seems that the error/exception is happening during the Startup/Configure step but I'm still getting the generic error page without details. Even the version generated on the server (DetailedErrors folder) I got this:
I enabled the Failed Request Tracing but still no useful information:
Even if I strip down the code in the Startup/Configure and add a try/catch as suggested I got the same error without détails. It seems to be a configuration/compilation issue but hard to debug without any information.
Upvotes: 41
Views: 19851
Reputation: 6763
In RC1 (as of beta8, perhaps), one should apparently use:
app.UseDeveloperExceptionPage();
.. which apparently only works if app.Properties["host.AppMode"]
is "development"
.
But this didn't work for me. The error message I was getting was specifically "An error occurred while starting the application", I have found that none of the given configurations will resolve this because the error is occurring before the configurations execute.
Somehow, the publish target folder must have gotten corrupted during publish because I found that deleting the entire deployment directory and re-publishing resolved the problem.
Otherwise, here is the reference: http://docs.asp.net/en/latest/fundamentals/diagnostics.html
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/error-handling
Upvotes: 21
Reputation: 3110
Errors that occur in startup in an ASPNET5 application are really hard to track down when running the app in Azure (at least with beta 3). Hopefully they find a way to improve the experience. I had to resort to stripping my startup down to the bare bones and then adding code line by line until the failure happened (in my case, it was a missing environment variable).
I've also used code like this (for debugging only) which might help depending on where the error is happening:
public void Configure(IApplicationBuilder app, IHostingEnvironment env )
{
try
{
// Add MVC to the request pipeline.
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}"
);
});
}
//exceptions in startup are really bad when running in azure, all you will get is an internal server error
//this code will write the exception message to the browser instead. Only use for debugging!!!
catch (Exception ex)
{
app.Run(async context =>
{
context.Response.ContentType = "text/plain";
await context.Response.WriteAsync(ex.Message);
});
}
}
Update 10/27/2016 A lot has changed since my original answer. The latest guidance is posted here:
https://docs.asp.net/en/latest/fundamentals/hosting.html
So, add:
.CaptureStartupErrors(true) and .UseSetting(WebHostDefaults.DetailedErrorsKey, "true") on your WebHostBuilder like so:
var host = new WebHostBuilder()
.CaptureStartupErrors(true)
.UseSetting(WebHostDefaults.DetailedErrorsKey, "true")
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
Upvotes: 22
Reputation: 303
In the Web app's Application settings, in the section App settings, add (or change the value of) Hosting:Environment to Development. Then you get the same error page as in your local development. In my Startup.cs, I have the regular Configure() method with the following code: (still in MVC 1.0 RC1-final)
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
Hope this helps!
Upvotes: 0
Reputation: 5952
I've experienced the exact same error with a web app running dnx-clr-win-x64.1.0.0-rc1-update1. I did the deployment directly from Visual Studio 2015 Enterprise Update 1. I found that the site was working whenever I did the first deployment on a newly created web app. Starting with the second deployment (even when deploying the exact same content), I started to see Internal Server Error 500. That brought me to the following solution:
Enabling "Remove additional files at destination" in the publishing wizard of Visual Studio fixed it for me.
Upvotes: 8
Reputation: 893
In my case with beta5, custom errors in web.config didn't help, local IIS was fine, and adding an exception handler didn't display anything. The only thing that worked was to nuke approot and redeploy.
Upvotes: 1
Reputation: 916
You must set app settings property ASPNET_DETAILED_ERRORS to true in web.config file.
Example of my edited web.config file:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="bootstrapper-version" value="1.0.0-beta6" />
<add key="runtime-path" value="..\approot\runtimes" />
<add key="dnx-version" value="1.0.0-beta6" />
<add key="dnx-clr" value="clr" />
<add key="dnx-app-base" value="..\approot\src\MyApp" />
<!-- This will turn on detailed errors when deployed to remote servers -->
<!-- This setting is not recommended for production -->
<add key="ASPNET_DETAILED_ERRORS" value="true" />
</appSettings>
<system.web>
<httpRuntime targetFramework="4.5.1" />
</system.web>
</configuration>
Upvotes: 10
Reputation: 13496
I had the same issue and spent a lot of time trying to dig into error logs, etc. (all of the other solutions given above). None of them giving any clue of what's gone wrong.
What I did that helped me finally see the error was to simply try to publish to a local IIS (after all azure web-app runs your dnx on IIS internally).
I could then immediately see that there are error when IIS tries to compile the source. (in my case was some malformed nuget package).
Recreate what happens on azure web-app by publishing to local IIS.
Upvotes: 5
Reputation: 2297
Did you try using Remote Debugging the Azure Webapp ? Chances are there is some exception happening which is responsible for this and if you watch your DEBUG OUTPUT window, you may be able to see which exception is happening and then change Visual Studio settings to break on that exception to see where it is happening. check this article to understand how to remote debug - http://blogs.msdn.com/b/webdev/archive/2013/11/05/remote-debugging-a-window-azure-web-site-with-visual-studio-2013.aspx
Upvotes: 3
Reputation: 19705
Create a web.config
inside your wwwroot
folder with this content :
<configuration>
<system.web>
<customErrors mode="Off" />
</system.web>
</configuration>
Upvotes: 4
Reputation: 12452
Have you checked in the eventlog.xml file? It's in the D:\home\LogFiles directory. You can view it from your app's Kudu site, or use the Azure Websites Event Viewer extension.
Upvotes: 3