Pregunta

He proyecto controles de usuario (UI) y estoy usando AJAX Toolkit extensión con ellos. El dll de AJAX Toolkit extensión se hace referencia en el proyecto. El proyecto está compilando con éxito.

Otro proyecto bajo misma solución que es proyecto WSPBuilder (Deploy). Cuando se construye la interfaz de usuario proyectar todos los controles estarán copia al directorio del proyecto Implementar 12\TEMPLATE\CONTROLTEMPLATES y una interfaz de usuario dll del proyecto también se copian en la carpeta GAC. (Para la reproducción, estoy usando eventos posteriores a la construcción)

A continuación, la construcción del proyecto Implementación mediante WSPBuilder construir y desplegar. Estoy recibiendo el mensaje de error:

An error occurred during the processing of . Unknown server tag 'asp:ScriptManager'.

Por favor, no digo que tengo que modificar manualmente el web.config para agregar y marcar la extensión Ajax como un control de seguridad. No voy a hacer eso.

Cualquier solución mejor?

P.S: estoy usando WSPBuilder, STSDEV y VSeWSS.

Editar

Gracias a Chris. El problema era:

En este caso, creo que es otra elementos en los cuales usted es web.config falta - las declaraciones de AJAX. Entre otras cosas, se necesita el siguiente en su web.config por lo .Net sabe cómo encontrar el ScriptManager clase:

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

Sin embargo, este problema va un poco extraño a mi lado. Tenía que enableSessionState conjunto de true de etiqueta pages bajo system.web y quite el comentario siguiente:

<add name=”Session” type=”System.Web.SessionState.SessionStateModule” />

pensé poner en AjaxExtension.dll GAC puede resolver este problema. Que estaba evitando escribir una función para modificar web.config. ¿Puedo hacer esto también en manifest.xml?

Por favor, sugerir!

¿Fue útil?

Solución

El error que no aparece está viendo a estar relacionado con la entrada SafeControls. Si ese fuera el caso, vería un mensaje que dice "No se puede añadir seleccionada elemento web (s). Elemento Web A o control de formulario Web en esta página no puede ser visualizado o importado. El tipo no está registrado como seguro."

En este caso, creo que es de otros elementos en web.config, que se echa en falta - las declaraciones de AJAX. Entre otras cosas , necesita lo siguiente en su web.config por lo .Net sabe cómo encontrar la clase ScriptManager:

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

Usted tiene un par de opciones:

  • Utilice la función en el popular SharePoint Características proyecto CodePlex que hará que el web.config cambia
  • escribir su propio código para realizar los cambios de web.config utilizando SPWebConfigModification.

Los detalles completos de la web.config cambios requeridos son detallada aquí en el blog de Mike Ammerlaan .

Cualquiera que sea la ruta que toma, comprobar la versión de AJAX está utilizando en contra de las orientaciones / muestras que utiliza.

Otros consejos

Un comentario desde el sitio WSPBuilder.

Buen trabajo! Adición de archivos DLL de terceros funcionó muy bien cuando desplegué AJAX y AJAX Control Toolkit. He creado una función para hacer todos los cambios web.config y se utiliza la carpeta GAC ??\ Referencia incluir el Control Toolkit DLL. Trabajado muy bien, incluso con múltiples servidores de la comunidad. Ese fue un protector de la vida!

Así que incluye la dll en su proyecto WSPBuilder conseguirlo incluido, a continuación, crear una función para modificar web.config. Ver este post para obtener información sobre cómo modificar web.config con una función.

En primer lugar hay que agregar el ensamblado que desea implementar en el proyecto VS. Por ejemplo, puede crear una carpeta "libs" para almacenar todos los montajes externos que necesitará en su sitio de equipo.

A continuación, usted tiene que editar el archivo manifest.xml de su Equipo de Definición del sitio. Puede encontrar este archivo en la carpeta de "paquete" dentro de su proyecto. Tenga en cuenta que la carpeta pkg sólo estará disponible si se ha implementado al menos el tiempo de solución de uno.

Bien, ahora hay que añadir un nuevo elemento <Assembly> niño al elemento <Assemblies> dentro del archivo manifest.xml de su solución de Equipo de Definición. Con el atributo "DeploymentTarget" se puede definir si la asamblea debe ser desplegado en la GAC ??o en la carpeta bin de la aplicación web.

El siguiente ejemplo muestra cómo las miradas de elementos <Assemblies> como si desea añadir el "TeamSiteDefinition1.dll" al GAC y añadir el "TestSolution.dll" a la carpeta bin. Si necesita una entrada de control seguro para su montaje puede agregar éste también.

<Assemblies>
    <Assembly Location="TeamSiteDefinition1.dll" DeploymentTarget="GlobalAssemblyCache" />
    <Assembly Location="TestSolution.dll" DeploymentTarget="WebApplication">
       <SafeControls>
          <SafeControl ..... />
       </SafeControls>
    </Assembly>
</Assemblies>
Licenciado bajo: CC-BY-SA con atribución
scroll top