Estoy intentando establecer una nueva funcionalidad de SDL Tridion UI 2012 en algunas páginas de prueba (predeterminadas). Recibo continuamente la alerta "La vista previa de esta página no está actualizada" a pesar de que hago clic en "Actualizar vista previa" varias veces. Estaba usando una imagen virtual, por lo que nadie más puede editar la página excepto yo. No importa qué componente haya cambiado. He echado un vistazo al archivo cd_core.log en el lado del servicio web de "vista previa de sesión" y encuentro estos nodos interesantes:

INFO  WritableODataClaimProcessor - No session wrapper is installed, not allowing modification operations
DEBUG HandleSessionContentUtil - There are no session wrappers into storage config file!
DEBUG HandleSessionContentUtil - There are no session wrappers into storage config file!
DEBUG WebContext - setCurrentClaimStore: com.tridion.siteedit.preview.PreviewClaimStore@dc60af, thread: Thread-59
DEBUG WritableODataClaimProcessor - Removing sessionId claim from ClaimStore!
DEBUG ClaimStore - remove: uri=taf:claim:contentdelivery:webservice:preview:sessionid
DEBUG WebContext - setCurrentClaimStore: null, thread: Thread-59

La parte más interesante es que se agregaron contenedores de sesión a cd_storage_conf.xml en el lado del servicio web de "vista previa de sesión". A continuación, forma parte de la "vista previa de la sesión" cd_storage_conf.xml:

    <Storages>       
        <Wrappers>               
            <Wrapper Name="SessionWrapper">             
                <Timeout>120000</Timeout>                  
                <Storage Type="persistence" Id="sqlServerDb" dialect="MSSQL" Class="com.tridion.storage.persistence.JPADAOFactory">
                    <Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120" />
                    <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                        <Property Name="serverName" Value="T2011" />
                        <Property Name="portNumber" Value="1433" />
                        <Property Name="databaseName" Value="Tridion_Session_Preview"/>
                        <Property Name="user" Value="TridionSessionPreview"/>
                        <Property Name="password" Value="tridion"/>
                    </DataSource>
                </Storage>                   
            </Wrapper>
        </Wrappers>            
        <StorageBindings>
            <Bundle src="preview_dao_bundle.xml"/>            
        </StorageBindings>       
        <Storage Type="filesystem" Class="com.tridion.storage.filesystem.FSDAOFactory" Id="staging" defaultFilesystem="false">
            <Root Path="C:\inetpub\wwwroot\software" />
        </Storage>
       <Storage Type="persistence" Id="sqlServerDb" dialect="MSSQL" Class="com.tridion.storage.persistence.JPADAOFactory">
            <Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120" />
            <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                <Property Name="serverName" Value="T2011" />
                <Property Name="portNumber" Value="1433" />
                <Property Name="databaseName" Value="Tridion_Broker_Staging"/>
                <Property Name="user" Value="TridionBrokerUser"/>
                <Property Name="password" Value="tridion"/>
            </DataSource>
        </Storage>
    </Storages>    
</Global>

<ItemTypes defaultStorageId="sqlServerDb" cached="false">
    <Item typeMapping="Page" cached="false" storageId="staging"/>
</ItemTypes>

He verificado el estado de validez de cd_storage_conf.xml y todo está bien (intente abrir XML a través de IE y se muestra correctamente).

Cuando vuelvo a publicar la página (Finalizar edición), todo está en estado correcto después de volver a cargar la página hasta que se realiza el primer cambio en cualquier componente. Este estado inesperado me dio un dolor y un dolor de cabeza tan fuerte, además me puso tan nervioso ... :).

9
Bogdan Stojanovic 28 may. 2012 a las 21:39
¿Le gustaría compartir conmigo cómo "colorear" el código para que sea más legible ...
 – 
Bogdan Stojanovic
28 may. 2012 a las 22:50
Agregué una etiqueta antes. Si hace clic en la marca de tiempo de mi edición (por lo que el texto "hace 14 minutos") verá la diferencia exacta. Además, renové tu XML, lo que también ayuda un poco a la legibilidad.
 – 
Frank van Puffelen
28 may. 2012 a las 22:55

1 respuesta

La mejor respuesta

Esto es lo que hace la Vista previa de actualización, asegúrese de que todos los pasos hasta la actualización de la página real funcionen y estén configurados correctamente y debería estar listo para hacerlo:

  1. Renderice su (s) plantilla (s) en modo de vista previa
  2. Publique los resultados en el servicio web de entrega de contenido
  3. El servicio web de CD escribe en la base de datos del contenedor de sesiones
  4. Recarga la página
  5. Los filtros de Ambient Framework (o módulos HTTP para .NET) buscan un token de sesión
  6. Se consulta a DB buscando contenido con el mismo token de sesión
  7. Si se encuentra contenido, se fusiona con el contenido de la página.

Los problemas típicos (en mi experiencia hasta ahora) están relacionados con la configuración de Ambient Framework: o los módulos no están instalados / configurados en su aplicación, o el cd_ambient_conf.xml contiene configuraciones de configuración no válidas.

Podría valer la pena rastrear los registros del paso 1 para averiguar dónde está fallando; saber dónde falla generalmente es el 80% de la solución.

15
Nuno Linhares 29 may. 2012 a las 19:19
Tanto web.configs (el servicio web y el sitio de ensayo contienen referencias a [Tridion.ContentDelivery.AmbientData.HttpModule] dentro de [System.webserver \ modules] y [system.web \ httpModules]. El servicio web de vista previa de la sesión contiene [Tridion.ContentDelivery.AmbientData .dll] dentro de la carpeta bin y [cd_preview_ambient.jar] y [cd_preview_webservice.jar] dentro de las carpetas lib. ¿Existe alguna configuración / configuración adicional relacionada con la habilitación del marco de datos ambientales? Cd_ambient_conf.xml contiene solo [] dentro del nodo [Cartuchos] ...
 – 
Bogdan Stojanovic
30 may. 2012 a las 01:56
He encontrado el siguiente registro de servicio web de vista previa de sesión interna interesante [SessionManagerImpl - Sin tienda de reclamo !!! ¡El marco ambiental probablemente no esté habilitado!]. En el sitio de ensayo dentro de cd_ambient_conf.xml existe [ com.tridion.siteedit.preview.PreviewClaimStoreProvider ]. Además, cuando edito algunos campos de componentes, puedo ver los cambios solo si hago clic en el campo. He comprobado y el servicio web está instalado como se esperaba, devuelve valores ...
 – 
Bogdan Stojanovic
30 may. 2012 a las 01:56
1
El servicio web utiliza un almacén de reclamaciones diferente (el predeterminado), no debe cambiarlo. ¿Ha intentado utilizar las aplicaciones web prediseñadas que se envían con los instaladores? Intentaría comparar versiones de DLL y Jars (con algo como Beyond Compare). Puede encontrar las aplicaciones prediseñadas en [carpeta de instalación de la interfaz de usuario] \ Content Delivery \ roles \ Web | WebService \ dotNet
 – 
Nuno Linhares
30 may. 2012 a las 15:11
1
Problema resuelto. [Tridion.ContentDelivery.Preview.dll] se colocó tanto en el servicio web de vista previa de la sesión como en el sitio de ensayo. La eliminación del servicio web de vista previa de la sesión junto con el reinicio de IIS conduce a la funcionalidad completa de la interfaz de usuario. @NunoGracias por mostrarme el camino ... De todos modos, desde mi punto de vista, es una característica excelente.
 – 
Bogdan Stojanovic
31 may. 2012 a las 15:35