Podría tener una discrepancia de versión en el ensamblado de tipos. Este era un problema conocido entre las versiones 10 y 11. Desafortunadamente, el mensaje de error no incluye información de la versión, por lo que parece una tontería.
Para evitarlo, puede deserializar la representación binaria del tipo, es decir, algo como esto (si su columna de geografía es la primera en el conjunto de resultados):
var geo = SqlGeography.Deserialize(reader.GetSqlBytes(0));
Hay otras soluciones alternativas, como hacer una redirección vinculante para el ensamblado.
Más información aquí:https://connect.microsoft.com/SQLServer/feedback/details/685654/invalidcastexception-retrieving-sqlgeography-column-in-ado-net-data-reader