This setup works really well for us. Using OWIN with Web API hosted on IIS via Helios means we have a small amount of code to get the API running. Not only is the code small, it’s succinct and clear, because we don’t rely on large frameworks with side-effects and magic conventions.

Azure Web Sites provides easy to use logging. Application logging via the System.Diagnostics.Trace type is added automatically to Azure Tables and Blob Storage, and it’s then available via the Kudu Log Streaming Service.
This doesn’t work for Helios out of the box. I did some debugging, and got as far as I needed to fix the bug without fully understanding the issue, as I couldn’t find the relevant code in Kudu. If anyone knows exactly why this doesn’t work out of the box, I’d love to know.

When you publish your ASP.NET project to Azure Web Sites, it automatically adds three new TraceListeners to your app: AzureDriveTraceListener, AzureTableTraceListener and AzureBlobTraceListener. These TraceListener types all exist in the Microsoft.WindowsAzure.WebSites.Diagnostics.dll assembly. I can’t find any reference to the assembly online, so it must not be in the open-sourced part of Azure Web Sites. You can download it from your Azure Web Site using the sample project I have in GitHub.

Azure Web Sites doesn’t seem to have full support for Helios hosted apps yet, so won’t do the automatic injection of the listeners. This is easy to fix by including the following in your web.config