Minimal permissions for Azure Workbook, Log Analytics Workspace & Application Insights

The problem I recently wanted to test Azure Workbook as a tool for monitoring dashboards. One challenge that I ran into is Workbook uses Azure permissions to grant access to both the Workbook itself and any logs / metrics it’s trying to show. It wasn’t exactly obvious what built-in Azure roles are needed to provide access to a Workbook that uses Application Insights metrics/logs stored in Log Analytics Workspace. Solution Azure Workbook Grant Workbook Reader (b279062a-9be3-42a0-92ae-8b3cf002ec4d) scoped to the Workbook to the user / group. This grants view access to the workbook. ...

November 29, 2025 · 2 min · Jussi Haapanen

.NET Core plugin dependency injection

Introduction You might run into a case where you would like to extend the application without updating the application core. Plugins could be one solution for the issue. It’s fairly simple to implement a plugin architecture in .NET Core. Microsoft has documented the process of adding plugin support for your application in Creating an application with plugin support. It’s a good quick start to plugin architecture and gets you quite far. However, it does not explain how to add support for dependency injection from host process to the plugin process. Plugins own internal dependencies could be created on plugin initialization and injected to the executing code but I prefer to have the .NET Core dependency injection system handle these dependencies as well. Plugin configuration is a good example of an object I’d prefer to be initialized and injected by the .NET Core DI. ...

July 7, 2020 · 8 min · Jussi Haapanen

Piping data to an application in .NET Core

Earlier today I had a need for a PlantUML API that could generate PlantUML diagrams without having to install the necessary dependencies on my PC. To achieve this I decided to write a small API using ASP.NET Core. I was thinking of just calling the PlantUML binary with the input data from a HTTP POST body. There could be some security implications but I was the only user of the system so it didn’t really matter. I was thinking piping the input data should be a very simple thing to do. It sure was in the end but there were a few things that I forgot about when dealing with streams. ...

June 16, 2019 · 2 min · Jussi Haapanen

Dynamic queries using NHibernate with the help of C# expression trees

I had to recently figure out a way to query database objects based on user input without knowing beforehand which classes user wants to query. Basically user would input a type and the system would find it’s child types from a database table. The children would then be fetched based on a set of rules (we do not want all items on the table, just the ones linked to the parent). ...

February 5, 2017 · 5 min · Jussi Haapanen