Crear SubWeb desde una Web Part Asíncrona

10/11/2005 - 13:31 por Antonio | Informe spam
Hola a todos,

¿Alguno sabe como crear una subweb desde una web part asíncrona?
Lo estoy intentando, pero siempre me sale el mensaje:
"No se puede completar esta acción. Vuelva a intentarlo."

Tampoco me deja recorrer la lista de plantillas de sitio dentro del
proceso asíncrono.

Gracias y un saludo.

Preguntas similare

Leer las respuestas

#1 Gustavo
10/11/2005 - 13:40 | Informe spam
Hola Antonio,
Estas seguro de que el problema es porque la WebPart es asincrona? Has
revisado el codigo desde una WebPart "normal" para estar seguro que funciona
correctamente? Si es asi, y estas seguro de que el codigo funciona bien para
crear SubWebs y ver las plantillas, hay algun proceso (dentro de los
diferentes procesos que estan corriendo asincronicamente en el momento) que
este interfiriendo con la creacion?
Saludos,
Gustavo
http://www.gavd.net/servers/default.aspx


"Antonio" wrote:

Hola a todos,

¿Alguno sabe como crear una subweb desde una web part asíncrona?
Lo estoy intentando, pero siempre me sale el mensaje:
"No se puede completar esta acción. Vuelva a intentarlo."

Tampoco me deja recorrer la lista de plantillas de sitio dentro del
proceso asíncrono.

Gracias y un saludo.

Respuesta Responder a este mensaje
#2 Antonio
10/11/2005 - 17:32 | Informe spam
Hola Gustavo,

Desde una Web Part normal (sincrona), puedo crear subweb y ver las
plantillas sin problemas.
El problema viene cuando lo intento hacer desde una web part asincrona.
Con sólo poner esto en el Proceso_sincrono():

'SPWebTemplateCollection spListaPlantillasSitios =
site.GetCustomWebTemplates(3082);'

ya me da el mensaje de "No se puede completar esta acción. Vuelva a
intentarlo."
El código es así:


public override void GetData()
{
SPSite site = SPControl.GetContextSite(Context);

System.Threading.WaitCallback w = new
System.Threading.WaitCallback(this.Proceso_Asincrono);
this.RegisterWorkItemCallback(w,site);
}

protected void Proceso_Asincrono(object state)
{
try
{
SPSite site = (SPSite)state;
SPWebTemplateCollection spListaPlantillasSitios =
site.GetCustomWebTemplates(3082);

//
//
}
catch(Exception ex)
{
errorText = ex.Message;
}
}


Gracias por tu ayuda.


"Gustavo" wrote:

Hola Antonio,
Estas seguro de que el problema es porque la WebPart es asincrona? Has
revisado el codigo desde una WebPart "normal" para estar seguro que funciona
correctamente? Si es asi, y estas seguro de que el codigo funciona bien para
crear SubWebs y ver las plantillas, hay algun proceso (dentro de los
diferentes procesos que estan corriendo asincronicamente en el momento) que
este interfiriendo con la creacion?
Saludos,
Gustavo
http://www.gavd.net/servers/default.aspx


"Antonio" wrote:

> Hola a todos,
>
> ¿Alguno sabe como crear una subweb desde una web part asíncrona?
> Lo estoy intentando, pero siempre me sale el mensaje:
> "No se puede completar esta acción. Vuelva a intentarlo."
>
> Tampoco me deja recorrer la lista de plantillas de sitio dentro del
> proceso asíncrono.
>
> Gracias y un saludo.
>
Respuesta Responder a este mensaje
#3 Gustavo
10/11/2005 - 20:45 | Informe spam
Hola Antonio,
La verdad, no puedo encontrar nada malo en tu codigo. Mi sospecha es que se
trata de un problema de multithreading. El SDK dice sobre la clase "SPSite":
"Any public static (Shared in Visual Basic) members of this type are safe for
multithreaded operations. Instance members are not guaranteed to be thread
safe.", lo que traducido a buen romance quiere decir que "SPSite" siempre
sera "Thread Safe", pero que si haces un objeto del tipo SPSite (como tu
"site" en el codigo), no te garantizan que sea igual en todos los threads.
Lo que quiero decir es que probablemente el FrameWork esta usando tu objeto
por algun otro lado, al mismo tiempo que tu lo intentas usar, y su estado
cambia de un lado al otro, sin que pueda dar un resultado. Si es asi, puedes
intentar "amarrarlo" con un "lock(this)", aunque no creo que te funcione,
pues esto solo garantiza que cuando el proceso empieza, se terminara de un
solo envion, sin esperar a ver que pasa por otros lados...
No se si has intentado con otros metodos del SPSite (por ejemplo con
"GetWebTemplates") a ver que pasa. No me sorprenderia que algunos funcionen y
otros no, lo que a su vez seria una comprobacion mas de que el FrameWork esta
ocupado con algunos de los metodos y con otros no, y que el aviso del SDK
tiene razon...
Suerte,
Gustavo
http://www.gavd.net/servers/default.aspx


"Antonio" wrote:

Hola Gustavo,

Desde una Web Part normal (sincrona), puedo crear subweb y ver las
plantillas sin problemas.
El problema viene cuando lo intento hacer desde una web part asincrona.
Con sólo poner esto en el Proceso_sincrono():

'SPWebTemplateCollection spListaPlantillasSitios =
site.GetCustomWebTemplates(3082);'

ya me da el mensaje de "No se puede completar esta acción. Vuelva a
intentarlo."
El código es así:


public override void GetData()
{
SPSite site = SPControl.GetContextSite(Context);

System.Threading.WaitCallback w = new
System.Threading.WaitCallback(this.Proceso_Asincrono);
this.RegisterWorkItemCallback(w,site);
}

protected void Proceso_Asincrono(object state)
{
try
{
SPSite site = (SPSite)state;
SPWebTemplateCollection spListaPlantillasSitios =
site.GetCustomWebTemplates(3082);

//
//
}
catch(Exception ex)
{
errorText = ex.Message;
}
}


Gracias por tu ayuda.


"Gustavo" wrote:

> Hola Antonio,
> Estas seguro de que el problema es porque la WebPart es asincrona? Has
> revisado el codigo desde una WebPart "normal" para estar seguro que funciona
> correctamente? Si es asi, y estas seguro de que el codigo funciona bien para
> crear SubWebs y ver las plantillas, hay algun proceso (dentro de los
> diferentes procesos que estan corriendo asincronicamente en el momento) que
> este interfiriendo con la creacion?
> Saludos,
> Gustavo
> http://www.gavd.net/servers/default.aspx
>
>
> "Antonio" wrote:
>
> > Hola a todos,
> >
> > ¿Alguno sabe como crear una subweb desde una web part asíncrona?
> > Lo estoy intentando, pero siempre me sale el mensaje:
> > "No se puede completar esta acción. Vuelva a intentarlo."
> >
> > Tampoco me deja recorrer la lista de plantillas de sitio dentro del
> > proceso asíncrono.
> >
> > Gracias y un saludo.
> >
Respuesta Responder a este mensaje
#4 Antonio
11/11/2005 - 09:13 | Informe spam
Gracias Gustavo,

Acabo de probar con "GetWebTemplates" y no da el error, lo malo es que
'sólo' me devuelve las plantillas del sistema y las que haya cargado con
stsadm, (que no era el caso).
Podría cargarla en el sistema pero he comprobado que me vuelve a dar el
mismo error si dentro del proceso asíncrono intento luego crear el subsite
con "site.AllWebs.Add".

La idea de utilizar un proceso asíncrono era porque tengo que lanzar un
proceso que cree muchas subweb desde un toplevel y se me iba siempre por
timeout, (y como a los asíncronos puedo aumentarle el tiempo de timeout).

¿Alguna idea de como hacerlo sin que me salte el timeout?

Muchas gracias por tu ayuda.




"Gustavo" wrote:

Hola Antonio,
La verdad, no puedo encontrar nada malo en tu codigo. Mi sospecha es que se
trata de un problema de multithreading. El SDK dice sobre la clase "SPSite":
"Any public static (Shared in Visual Basic) members of this type are safe for
multithreaded operations. Instance members are not guaranteed to be thread
safe.", lo que traducido a buen romance quiere decir que "SPSite" siempre
sera "Thread Safe", pero que si haces un objeto del tipo SPSite (como tu
"site" en el codigo), no te garantizan que sea igual en todos los threads.
Lo que quiero decir es que probablemente el FrameWork esta usando tu objeto
por algun otro lado, al mismo tiempo que tu lo intentas usar, y su estado
cambia de un lado al otro, sin que pueda dar un resultado. Si es asi, puedes
intentar "amarrarlo" con un "lock(this)", aunque no creo que te funcione,
pues esto solo garantiza que cuando el proceso empieza, se terminara de un
solo envion, sin esperar a ver que pasa por otros lados...
No se si has intentado con otros metodos del SPSite (por ejemplo con
"GetWebTemplates") a ver que pasa. No me sorprenderia que algunos funcionen y
otros no, lo que a su vez seria una comprobacion mas de que el FrameWork esta
ocupado con algunos de los metodos y con otros no, y que el aviso del SDK
tiene razon...
Suerte,
Gustavo
http://www.gavd.net/servers/default.aspx


"Antonio" wrote:

> Hola Gustavo,
>
> Desde una Web Part normal (sincrona), puedo crear subweb y ver las
> plantillas sin problemas.
> El problema viene cuando lo intento hacer desde una web part asincrona.
> Con sólo poner esto en el Proceso_sincrono():
>
> 'SPWebTemplateCollection spListaPlantillasSitios =
> site.GetCustomWebTemplates(3082);'
>
> ya me da el mensaje de "No se puede completar esta acción. Vuelva a
> intentarlo."
> El código es así:
>
>
> public override void GetData()
> {
> SPSite site = SPControl.GetContextSite(Context);
>
> System.Threading.WaitCallback w = new
> System.Threading.WaitCallback(this.Proceso_Asincrono);
> this.RegisterWorkItemCallback(w,site);
> }
>
> protected void Proceso_Asincrono(object state)
> {
> try
> {
> SPSite site = (SPSite)state;
> SPWebTemplateCollection spListaPlantillasSitios =
> site.GetCustomWebTemplates(3082);
>
> //
> //
> }
> catch(Exception ex)
> {
> errorText = ex.Message;
> }
> }
>
>
> Gracias por tu ayuda.
>
>
> "Gustavo" wrote:
>
> > Hola Antonio,
> > Estas seguro de que el problema es porque la WebPart es asincrona? Has
> > revisado el codigo desde una WebPart "normal" para estar seguro que funciona
> > correctamente? Si es asi, y estas seguro de que el codigo funciona bien para
> > crear SubWebs y ver las plantillas, hay algun proceso (dentro de los
> > diferentes procesos que estan corriendo asincronicamente en el momento) que
> > este interfiriendo con la creacion?
> > Saludos,
> > Gustavo
> > http://www.gavd.net/servers/default.aspx
> >
> >
> > "Antonio" wrote:
> >
> > > Hola a todos,
> > >
> > > ¿Alguno sabe como crear una subweb desde una web part asíncrona?
> > > Lo estoy intentando, pero siempre me sale el mensaje:
> > > "No se puede completar esta acción. Vuelva a intentarlo."
> > >
> > > Tampoco me deja recorrer la lista de plantillas de sitio dentro del
> > > proceso asíncrono.
> > >
> > > Gracias y un saludo.
> > >
Respuesta Responder a este mensaje
#5 Gustavo
11/11/2005 - 11:18 | Informe spam
Hola Antonio,
Por pura casualidad yo estoy haciendo algo similar en el momento, aunque
estoy usando una aplicacion de consola para crear los sitios, y hasta ahora
no he tenido tu problema. Puede ser que el servidor no es suficientemente
rapido para crear los sitios antes del time out...
Suerte,
Gustavo
http://www.gavd.net/servers/default.aspx


"Antonio" wrote:

Gracias Gustavo,

Acabo de probar con "GetWebTemplates" y no da el error, lo malo es que
'sólo' me devuelve las plantillas del sistema y las que haya cargado con
stsadm, (que no era el caso).
Podría cargarla en el sistema pero he comprobado que me vuelve a dar el
mismo error si dentro del proceso asíncrono intento luego crear el subsite
con "site.AllWebs.Add".

La idea de utilizar un proceso asíncrono era porque tengo que lanzar un
proceso que cree muchas subweb desde un toplevel y se me iba siempre por
timeout, (y como a los asíncronos puedo aumentarle el tiempo de timeout).

¿Alguna idea de como hacerlo sin que me salte el timeout?

Muchas gracias por tu ayuda.




"Gustavo" wrote:

> Hola Antonio,
> La verdad, no puedo encontrar nada malo en tu codigo. Mi sospecha es que se
> trata de un problema de multithreading. El SDK dice sobre la clase "SPSite":
> "Any public static (Shared in Visual Basic) members of this type are safe for
> multithreaded operations. Instance members are not guaranteed to be thread
> safe.", lo que traducido a buen romance quiere decir que "SPSite" siempre
> sera "Thread Safe", pero que si haces un objeto del tipo SPSite (como tu
> "site" en el codigo), no te garantizan que sea igual en todos los threads.
> Lo que quiero decir es que probablemente el FrameWork esta usando tu objeto
> por algun otro lado, al mismo tiempo que tu lo intentas usar, y su estado
> cambia de un lado al otro, sin que pueda dar un resultado. Si es asi, puedes
> intentar "amarrarlo" con un "lock(this)", aunque no creo que te funcione,
> pues esto solo garantiza que cuando el proceso empieza, se terminara de un
> solo envion, sin esperar a ver que pasa por otros lados...
> No se si has intentado con otros metodos del SPSite (por ejemplo con
> "GetWebTemplates") a ver que pasa. No me sorprenderia que algunos funcionen y
> otros no, lo que a su vez seria una comprobacion mas de que el FrameWork esta
> ocupado con algunos de los metodos y con otros no, y que el aviso del SDK
> tiene razon...
> Suerte,
> Gustavo
> http://www.gavd.net/servers/default.aspx
>
>
> "Antonio" wrote:
>
> > Hola Gustavo,
> >
> > Desde una Web Part normal (sincrona), puedo crear subweb y ver las
> > plantillas sin problemas.
> > El problema viene cuando lo intento hacer desde una web part asincrona.
> > Con sólo poner esto en el Proceso_sincrono():
> >
> > 'SPWebTemplateCollection spListaPlantillasSitios =
> > site.GetCustomWebTemplates(3082);'
> >
> > ya me da el mensaje de "No se puede completar esta acción. Vuelva a
> > intentarlo."
> > El código es así:
> >
> >
> > public override void GetData()
> > {
> > SPSite site = SPControl.GetContextSite(Context);
> >
> > System.Threading.WaitCallback w = new
> > System.Threading.WaitCallback(this.Proceso_Asincrono);
> > this.RegisterWorkItemCallback(w,site);
> > }
> >
> > protected void Proceso_Asincrono(object state)
> > {
> > try
> > {
> > SPSite site = (SPSite)state;
> > SPWebTemplateCollection spListaPlantillasSitios =
> > site.GetCustomWebTemplates(3082);
> >
> > //
> > //
> > }
> > catch(Exception ex)
> > {
> > errorText = ex.Message;
> > }
> > }
> >
> >
> > Gracias por tu ayuda.
> >
> >
> > "Gustavo" wrote:
> >
> > > Hola Antonio,
> > > Estas seguro de que el problema es porque la WebPart es asincrona? Has
> > > revisado el codigo desde una WebPart "normal" para estar seguro que funciona
> > > correctamente? Si es asi, y estas seguro de que el codigo funciona bien para
> > > crear SubWebs y ver las plantillas, hay algun proceso (dentro de los
> > > diferentes procesos que estan corriendo asincronicamente en el momento) que
> > > este interfiriendo con la creacion?
> > > Saludos,
> > > Gustavo
> > > http://www.gavd.net/servers/default.aspx
> > >
> > >
> > > "Antonio" wrote:
> > >
> > > > Hola a todos,
> > > >
> > > > ¿Alguno sabe como crear una subweb desde una web part asíncrona?
> > > > Lo estoy intentando, pero siempre me sale el mensaje:
> > > > "No se puede completar esta acción. Vuelva a intentarlo."
> > > >
> > > > Tampoco me deja recorrer la lista de plantillas de sitio dentro del
> > > > proceso asíncrono.
> > > >
> > > > Gracias y un saludo.
> > > >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida