none
Problema con WebPart y controles ascx en VS 2005 para Sharepoint RRS feed

  • Pregunta

  • Hola a todos! tengo el siguiente problema:

    Me han pedido que desarrolle una WebPart en VS 2005 (visual basic) que contenga embebidos en la DLL todos sus recursos (imágenes, js, css, ascx, etc) y que pueda ser utilizada de la misma forma sin importar si se la va a utilizar en un portal Sharepoint o en una aplicación web cualquiera. Esa es la situación.

    He logrado compilar la WebPart con todos sus recursos embebidos y hacer que una aplicación web asp.net la consuma sin problemas únicamente agregando una referencia a la dll de mi webPart, para lograr esto lo que hice fue agregar al proyecto web que contiene la DLL un AssemblyResourceProvider customizado, que se inicializa en un constructor shared en la clase que hereda de WebPart esto me ha funcionado perfecto ya que mi problema aparecía en el momento de hacer Page.LoadControl("~/proyecto_contenedor_webpart.dll/el_control.ascx).

    Sin embargo, cuando intento agregar esta webPart a sharepoint no funciona, da un error diciendo "no se puede importar la webPart". El problema está en la línea que hace el Page.LoadControl ya que si le quito eso funciona (no hace nada pero no da error). Por qué puedo hacerlo funcionar desde una aplicación web solo con la referencia y no desde sharepoint? Está mal la forma de cargar los controles ascx? (Una cosa que había probado fue obtener los controles por Reflection desde el assembly, pero eso no funciona ni siquiera desde una aplicación web de test, ya que todos los componentes de los usercontrols (textbox, lables, etc) quedan en Nothing y es imposible utilizarlos, no se renderizan.)

    Los pasos que seguí para instalarla en sharepoint fueron: colocar la DLL en la carpeta app_bin del sitio correspondiente, agregarla a la lista de safeControls en el web.config y luego el procedimiento normal para agregarla a la página en sharepoint.

    Existe alguna forma de hacer esto que me han pedido? Mi aplicación webpart es una DLL que contiene varios ascx, una webReference y no mucho más.

    Desde ya mil gracias a quien pueda darme al menos una guía.
    • Cambiado Enrique M. Montejo miércoles, 1 de junio de 2011 22:18 desarrollo web (De:Lenguaje VB.NET)
    lunes, 24 de agosto de 2009 1:20

Todas las respuestas

  • hola

    mira este link

    Sharepoint Webpart Using Web User Control

    has probado agregar la dll en la GAC ?
    o por ahi en el bin de sharepoint ?
    no me suan que la carpeta app_bin este del todo correcta, no has visto una capreta con el simple nombre bin, en el sitio donde tienes configurado sharepoint.

    has firmado la dll ?
    recuerda que cuando la pones en la GAc debes firmarla


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 24 de agosto de 2009 2:56
  • Hola Lenadro!!

    Muchas gracias por tu respuesta!
    He probado a poner la DLL en el directorio bin del sitio donde intento colocar la webpart y no me funcionó, en algun blog encontré que se podía poner en _app_bin y ahí pude hacer funcionar webparts sencillas (sin user controls).

    He firmado la DLL, y agregué la cláusula de seguridad que exige Sharepoint en el archivo Assmebly.info "<Assembly: AllowPartiallyTrustedCallers()>". Olvidé mencionar que tengo (por parte del cliente) prohibido utilizar la GAC bajo ningún concepto (problemático, lo se).

    Ahora voy a leer el link que me has pasado, a ver si me oriento un poco más. Cuál es la forma recomendada por Microsoft para utilizar WebParts con UserControls en Sharepoint? Tengo entendido que existe una carpeta de la cual sharepoint consume todos los ascx, pero no se si es lo "recomendado" por Microsoft o es solo una forma de hacerlo.

    Mil gracias nuevamente.
    saludos.

    Guillermo Nater.
    lunes, 24 de agosto de 2009 12:20
  • Estimado Guillermo, yo trataría por todos los medios usar la GAC, y en lo posible también la RP2, lo cual te ayudaría mucho. Asimismo, si pudieras incrustar, o hasta enajenar, la WPG de SilverLight estaría bárbaro realmente. Espero tus comentarios, saludos cordiales.

     

    PD: De última hablá con William Gates, y quizá en la próxima reunión de accionistas además de ver cuánto más entró a su cuenta puedan ver cómo hacer que los programadores que usan sus productos no deban sufrir noches de insomnio por la incompatibilidad de sus propios estándares y productos, como me ha pasado.

    martes, 25 de agosto de 2009 1:39
  • hola,

    Queria pasarte este link que por ahi ayude a aclarar als cosas
    Deploying Web Parts in Windows SharePoint Services

    como veras defines y explcia varios sitios donde hacer deploy y sus ventajas y desventajas

    Pero es este segundo link el que me parece mas importante:
    Securing Web Parts in Windows SharePoint Services

    Microsoft Windows SharePoint Services and Code Access Security

    Configure Web Part Permissions

    como veras en todos los link explcian que existe un nivel de seguridad.

    por eso busca algunas de estas lineas

    <trust level=”WSS_Minimal” originUrl=”" />
    <trust level=”WSS_Medium” originUrl=”" />
    <trust level=”Full” originUrl=”" />

    en el web.config de tu sitio sharepoint, y modificalo cual tengas por

    <trust level=”Full” originUrl=”" />

    segun veo esta deberia darte permisos suficientes para poder dejar utilizar el assembly desde la carpeta \bin



    Nota: recuerda que en los sitio de msdn puedes cambiar el idisin con el combo en la parte superior

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 25 de agosto de 2009 3:40