2011-05-14 18 views
9

Sólo quiero eliminar el Directory que se encuentra en el project folder.Suprimir el directorio en el tiempo de ejecución

Esa carpeta tiene toda la web sharing authority and permission.

El problema surge cuando estoy deleting the folder.

La carpeta se borró del serverpath(Virtual Directory).

Pero mi problema es que cuando termine mi tarea y haga clic en cualquier control que me va a redirigir a la Login page con el return url ya que hay una secure authentication en el directorio raíz está disponible Dominio

+4

Realmente no entiendo su pregunta. ¿Puedes reformular esa última oración? –

Respuesta

16

Aplicación reciclado cuando Los subdirectorios se eliminan, es por eso que su sesión se perderá y será redirigido a la página de inicio de sesión.

Para obtener más detalles, consulte este artículo de MSDN Blog y lea ¿Por qué se recicla un dominio de aplicación? de aquí ASP.NET Case Study: Lost session variables and appdomain recycles

y también comprobar éste Deleting ASP.NET 2.0 Application Sub-Directories Shuts Down the AppDomain

+0

gracias Akhtar entiendo el problema, pero ¿me puede decir la solución de esto. ¿Cómo puedo superar esta situación – Vir

0

carpeta Se puede reemplazar desde la raíz del proyecto en la carpeta App_Data?

6

Como se señala en otra respuesta, esto se debe a que la aplicación web se reinicia cada vez que elimina una carpeta dentro de la estructura de directorios de la aplicación web (es decir, debajo del directorio raíz de la aplicación web).

La única solución que encontré para este problema es mover los directorios de datos (que usted crea/elimina/modifica) fuera del directorio raíz/directorio virtual de la aplicación web.

Luego creamos un enlace (unión) en el sistema de archivos para que el directorio parezca estar dentro del directorio virtual. Esto evita que ASP.NET supervise el directorio de datos para operaciones de eliminación.

Ejemplo:

  • Nuestro sitio web (directorio virtual) se encuentra en C:\projectX\website
  • el directorio de datos (donde creamos/borrar archivos y carpetas) se encuentra en C:\projectX\data
  • entonces se crea una enlace que hace que la carpeta de datos esté disponible como C:\projectX\website\data

El enlace se crea utilizando el programa Linkd.exe (disponible en el kit de recursos de Windows), con el siguiente comando:

linkd c:\projectX\website\data c:\projectX\data 

Ahora C:\projectX\website\data es un enlace/unión que apunta al directorio de datos real. Dentro de su aplicación web, puede continuar trabajando como si el directorio de datos fuera un directorio físico debajo del directorio raíz de la aplicación web.

E.g.en su sitio web se puede acceder a la carpeta de datos utilizando este código:

Server.MapPath("~/data") 

Y también se puede utiliza el explorador de archivos de Windows y vaya a C: \ Projectx \ web \ data. Parece como un directorio real.

Como puede ver, puede seguir utilizando la carpeta de datos vinculada como si fuera una carpeta normal dentro del directorio de la aplicación web. La única diferencia es que ASP.NET no realizará un seguimiento del directorio para las operaciones de eliminación y, por lo tanto, no reiniciará la aplicación. Esto significa que ahora puede crear/eliminar/modificar carpetas y archivos dentro del directorio ~/data como lo desee, sin tener que reiniciar la aplicación web.

Cuestiones relacionadas