Todas las publicaciones, artículos y otros contenidos de este blog se proporciona "TAL CUAL", sin garantías, y no otorga ningún derecho. Cualquier ejemplo esta bajo los términos especificados por Microsoft
Hola a todos, me llamo Héctor Calvarro Martín y soy ingeniero de SharePoint para desarrolladores. No llevo mucho tiempo por estos lares pero ya alguno seguro que me habeís conocido. A partir de ahora postearé información para ayudar a todos los desarrolladores de código sobre SharePoint a comprender escenarios complejos o como hacer troubleshooting de las aplicaciones "customizadas".
Muchas Gracias a todos por vuestra atención y tendreís noticias de mi pronto. Un saludo.
Héctor Calvarro Martín. SharePoint Dev. Microsoft Support Engineer for DEV EMEA
Hace unos días he tenido un caso bastante interesante. El cliente recibía Access Denied con usuarios que tenían permisos de Read Only o de Only View pero no para el resto de permisos. No aparecía ningun error ni excepción rara en los logs de SharePoint ni en el Event Viewer. Cada vez que accedía a la pagina se mostraba un Access Denied a un elemento de una lista y la siguiente url http://myurl/UK/_layouts/AccessDenied.aspx?Source=http%3A%2F%2Fdev%2FUK%2FPages%2Fhomepageuk%2Easpx&Type=list&name=%7B3E7F224F%2DA3AF%2D4750%2D8E46%2DCF5380BF4BA5%7D Por lo que dedujimos, la lista que estába fallando era la siguiente %7B3E7F224F%2DA3AF%2D4750%2D8E46%2DCF5380BF4BA5%7D que transformada es {3E7F224F-A3AF-4750-8E46-CF5380BF4BA5}. Usamos Sharepoint Manager 2007 ;para buscar la correspondiente lista asociada al guid que estaba dando el Access Denied.
Resultó que esa lista era la Master Page Gallery. Por lo cual, entramos en la galería y observamos que algunas master pages customizadas no estaban en estado approved. Finalmente aprobamos todas aquellas que no lo estaban y el Access Denied desapareció
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.
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");
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";
ObjectDataSource _myObjectDataSource = new ObjectDataSource(); _myObjectDataSource .TypeName = "DataSources"; _myObjectDataSource .SelectMethod = "GetMyData";
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.