You're right, 500 - Internal Server Error, it does, if the DateTime has it's DateTimeKind set to Utc, which it didn't (even though it was in UTC time). I created an extension method, using DateTimeOffset, to return a DateTime with the DateTimeKind set to Utc and all is well.
Scratch that, I opted to use the DateTime.SpecifyKind() method instead, which seems neater.