I've written a method on my controller that auto generates a powerpoint deck for my client and all that works fine...except I'm stuck on the part about saving the file to disk.
I'm no stranger to this concept; and "thought" that all I needed to do is grant IIS_IUSRS write permission on the directory and read permission on all parent directories. I'm using IIS 7, and I've done this before with IIS 6 granting NETWORK SERVICE the same permissions.
Just for kicks, I even gave EVERYONE write permissions on the directory and I still keep getting the Exception: System.UnauthorizedAccessException: Access to the path 'C:......\Content\PPT' is denied. (I removed some of the path for simplicity).
Is there anything else I am overlooking? The server it's on is the first one I've set up, so I just may have overlooked something?
Here's my controller method simplified:
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();
}
}
the presentation.Save() method takes a path and a save format...I don't know what else to try... Is there something wrong with my code? Am I creating the path incorrectly? I can also pass a Stream stream into the save method, but I am not sure if that will fix the problem.
I found the solution - I'm using IIS 7, and I had the application pool set to the wrong identity. In IIS 7, I simply changed the identity of the application pool my app is running on and boom, everything worked. I used NETWORK SERVICE as my identity.
Also for those using Aspose Slides, I also had to make sure the file name was in the path.