He escrito un método en mi controlador que genera automáticamente un mazo de PowerPoint para mi cliente y todo funciona bien ... excepto que estoy atascado en la parte sobre guardar el archivo en el disco.¿Por qué sigo obteniendo "Acceso a la ruta 'C: ... ...' denegado" incluso después de otorgar permiso de escritura IIS_IUSRS en el directorio?
No soy ajeno a este concepto; y "pensé" que todo lo que tenía que hacer era otorgar permiso de escritura IIS_IUSRS en el directorio y leer el permiso en todos los directorios principales. Estoy usando IIS 7, y he hecho esto antes con IIS 6 otorgando a NETWORK SERVICE los mismos permisos.
Solo por dar patadas, incluso le di a TODOS los permisos de escritura en el directorio y sigo recibiendo la Excepción: System.UnauthorizedAccessException: Acceso denegado a la ruta 'C: ...... \ Content \ PPT'. (Eliminé parte del camino por simplicidad).
¿Hay algo más que esté pasando por alto? El servidor en el que está es el primero que configuré, así que es posible que haya pasado por alto algo.
Aquí está mi método de control simplificado:
public ActionResult CreatePowerPoint()
{
string path = HttpContext.Server.MapPath("~/Content/PPT");
Aspose.Slides.Presentation presentation = new Aspose.Slides.Presentation();
CreatePresentation(presentation);
presentation.Save(path, Aspose.Slides.Export.SaveFormat.Ppt);
return View();
}
}
el método presentation.Save() toma un camino y un formato para guardar ... No sé qué más para intentar ... ¿Hay algo malo con mi código? ¿Estoy creando el camino incorrectamente? También puedo pasar una corriente de Stream en el método de guardar, pero no estoy seguro si eso solucionará el problema.
La parte de la ruta que decidió omitir por conveniencia puede hacer la diferencia. Debe mostrar en qué árbol del directorio está intentando guardar el archivo; Windows en algunas versiones no permite a usuarios no administrativos escribir en algunas carpetas como parte de UAC. "No puedo guardar en este directorio" sin mostrar el directorio hace que la pregunta no tenga respuesta. –
O puede intentar suplantar a un Usuario en lugar de darle a IIS_IUSERS o a TODOS los permisos. Creo que no se permite el acceso a todas las carpetas de usuarios no administrativos y eso crea problemas. El camino correcto es la suplantación. – Tayyab
Agradezco la ayuda.Encontré la solución que publiqué en mi propia respuesta. Gracias también Ken, porque la ruta era correcta, pero también necesitaba tener el nombre del archivo agregado al final de la ruta. – Ben