Manual JWT Validation against Azure Active Directory

For our current WebApi project we decided to implement OAuth2 authentication with Azure Active Directory. As our API needs to support other authentication mechanisms like Basic and Negotiate beside OAuth2 we implemented multiple authentication filters that, where each filter is responsible for a specific authentication mechanism. One of these authentication filters, the BearerAuthenticationFilter, is responsible […]

Using Dependency Injection with StructureMap to decouple business logic from WebApi OData Controllers

Today’s post title is rather lengthly so I keep the introduction short and come right to the point: when using OData (or any web services therefore) it can become quite hard to keep the actual business logic separate and not to mix things where they do not belong. At least for me, as I have […]

Using CodeContracts with OData Controllers and Web.Api Exception Filters

When writing ODATA controllers for our projects we spend quite some time on writing boilerplate code and input parameter validation. In addition, for our error handling we would like detailed information for internal troubleshooting but not so detailed information sent back to the client (i.e. no stack traces). In order to achieve this without extra […]

Using LightSwitch with EntityFramework 6 and CodeFirst based ODATA Controllers

Enhancing LightSwitch applications with additional ODATA or WebAPI controllers is a pretty common task. However when you try to build a CodeFirst based controller in combination with EntityFramework 6, you will run into a lot of errors by default. Here are the steps to get this cleared and running: 1. Create a Visual Studio LightSwitch […]

HOWTO: Using NonBindable Service Level ODATA Actions

Following the very cool series of ODATA articles on the ASP.NET site by Mike Wasson you will see that it is possible to define actions not only on entities directly, but also (unbound) on entity sets and the service root itself. While it is fairly straightforward to implement entity set action (the same as an […]

WebAPI and “The response to this POST request did not contain a ‘location’ header. That is not supported by this client.”

I just came across another nuisance in .NET WebAPI that I want to share with you quickly. In one of our LightSwitch projects we use WebAPI ODATA controller to help out when LightSwitch internal capabilities come to their end. As we are using a PowerShell once in a while as you might already have guessed […]

HTTP 406 when mixing WebAPI RouteTable.Routes.MapHttpRoute and HttpConfiguration.Routes.MapODataRoute

[UPDATE] 2014-11-28 Jerther sent me a comment (see below) on how he solved this issue! So how did he do it? The short answer is, that you have to include special registration code inside the ‘Application_Start()’ and other places where the order on how you code it plays a crucial role. Check out his post […]

Microsoft.AspNet.WebApi.Client 5.2.0 not compatible with LightSwitch Silverlight Client

When trying to add the current “Microsoft.AspNet.WebApi.OData” to a LightSwitch project I got the following error message: We are not using Silverlight in our application, only the HTML client – except when doing user and role administration … As a matter of fact we only need the package on the server layer anyway. So the […]

WebAPI ODATA v3 can only generate uni-directional associations

This will be a quick post about WebAPI and ODATA controllers, and a strange “bug” or behaviour I found. I was not aware of this, so maybe it is also of some interest for you. When you create an ODATA service via WebAPI and want to connect two or more entity sets via a relation […]

HOWTO: Create a LightSwitch compatible OData REST Web API Endpoint without EntityFramework

LightSwitch can consume ODATA data source that you can use to gain more flexibility than using the internal data sources that also generate ODATA REST endpoints. Microsoft Web API provides an easy way on how to generate these endpoints. In this post I quickly describe the steps you need to take to actually create an […]