Problema de cualificación de un ObjectDataSource. System.InvalidOperationException: The type specified in the TypeName property of ObjectDataSource

Hola a todos

Con frecuencia estoy encontrando bastantes casos de soporte donde aparece el siguiente mensaje con

Exception Details: System.InvalidOperationException: The type specified in the TypeName property of ObjectDataSource '_myObjectDataSource' could not be found.

datasource

Aunque parezca a simple vista que nos hallamos ante un gran problema, no es más que un problema de cualificación en el código a la hora de invocar el ObjectDataSource. Entonces se debería añadir el nombre Public Key, version y culture en un caso o en otro namespace y assembly en el que esta incluido el ObjectDataSource que se está declarado.

Dos ejemplos serían los siguientes (dependiendo de como lo invoqueis)

ObjectDataSource _myObjectDataSource = new ObjectDataSource( "MyWebPart.SourceProvider.DataSources, MyWebPart.SourceProvider",
"GetMyData");

La solución sería

ObjectDataSource _myObjectDataSource = new ObjectDataSource(
"MyWebPart.SourceProvider.DataSources, MyWebPart.SourceProvider,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=68acc472a0988aff",
"GetMyData");

Como veis hemos añadido la Public Key, culture y la versión para que SharePoint exactamente sepa donde buscarlo. 

Desde el otro método de invocación

ObjectDataSource _myObjectDataSource = new ObjectDataSource();
_myObjectDataSource .TypeName = "DataSources";
_myObjectDataSource .SelectMethod = "GetMyData";

La solución sería

ObjectDataSource _myObjectDataSource = new ObjectDataSource();
_myObjectDataSource .TypeName = "MyWebPart.SourceProvider.DataSources";
_myObjectDataSource .SelectMethod = "GetMyData";

Para arreglarlo deberíamos de indicar el assembly y el namespace donde se encuentra el objectdatasource.

Un saludo.

Héctor Calvarro Martín. SharePoint Dev. Microsoft Support Engineer for DEV EMEA