asp.net - ¿Debería la cuenta de servicio de red recibir permisos de archivos temporales de forma predeterminada?
crystal-reports administration (3)
Recientemente estuve trabajando con la generación de un PDF de Crystal Reports a través de un formulario web. Estaba fallando, lo que determiné que era causado por la configuración de permisos en el directorio c: / windows / temp. Le di acceso completo a la cuenta de Servicio de red a esta carpeta, que solucionó el problema de inmediato. Pero, ¿hay alguna razón por la cual la cuenta del Servicio de Red no tenía estos permisos por defecto?
Rick Strahl hace esta pregunta aquí . Parece que no debería haber problemas al hacer esto, pero Rick no tenía claro por qué el valor predeterminado está establecido de esa manera.
El servidor web es Windows Server 2003
% windows% / temp no es para templar en general y hacer barridos. Está claro que Crystal Reports está abusando de ese directorio. Esto sucede mucho cuando los desarrolladores son demasiado perezosos para arrancar sus máquinas con algo más que una cuenta de administrador.
Todos los usuarios (incluido el servicio de red) tienen su propio espacio temporal, con todos los derechos de acceso, en Documentos y configuración . Los ganadores no actúan como CR, y usan sus propios espacios temporales.
En resumen, no hay nada de malo con los permisos predeterminados en win / temp. Creo que es simplemente para el funcionamiento interno de Windows. (Por otra parte, sería mucho mejor para todos los interesados, si ese directorio nunca existió en primer lugar).
En estos días, la opción predeterminada tenderá a ser la más segura. No creo que haya ninguna otra razón.
Tuve el mismo problema que tú, y en mi entorno solo di permiso y seguí adelante.
Esta publicación sugiere que es la culpa de Crystal Reports, que hace referencia explícita a% WINDIR% / Temp en lugar de utilizar una API como Path.GetTempPath (). De hecho, he visto Path.GetTempPath () devolver% WINDIR% / Temp cuando se ejecuta en la cuenta del Servicio de red en Windows 2003.
Esta publicación sobre la creación de archivos temporales tiene comentarios que admiten el uso de la carpeta temporal de Windows.
Un artículo de msdn sobre el uso de la cuenta del servicio de red establece que "si su aplicación ASP.NET necesita usar archivos o carpetas en otras ubicaciones, debe habilitar específicamente el acceso" Esto me dice que la restricción predeterminada para la carpeta temporal no es porque el La carpeta temporal fue seleccionada, pero todas las demás ubicaciones además de la carpeta raíz IIS están restringidas por defecto.