IIS 8, ASP.NET MVC 4, 4.5 .NETPourquoi les autorisations sont-elles bancales lorsque mon agent IIS enregistre un fichier dans ASP.NET?
private static string SaveProfilePicFile(UserProfileViewModel model)
{
var tempFilename = Path.GetTempFileName();
model.ProfilePic.Profile.UploadedFile.SaveAs(tempFilename);
var staticContentFilename = Helpers.GetStaticContentFilename(
StaticContentType.Avatar, model.ProfilePic.Profile.UserId);
var destinationFilename = Path.Combine(
ConfigurationManager.AppSettings["StaticContentPath"],
"profile",
staticContentFilename);
if (File.Exists(destinationFilename))
File.Delete(destinationFilename);
if (!HasJpegHeader(tempFilename)) // convert temp file into JPG
{
using (var image = new Bitmap(tempFilename))
image.Save(destinationFilename, ImageFormat.Jpeg);
File.Delete(tempFilename);
}
else
{
File.Move(tempFilename, destinationFilename);
}
return staticContentFilename;
}
Je ne suis pas intéressé par une revue de code, je sais que les choses pourraient faire mieux. En ce moment, j'ai rencontré un problème inhabituel. StaticContentPath
pointe vers c:\inetpub\wwwroot\static.domain.com
, qui est desservie par un pool d'applications différent configuré pour désactiver les scripts et mettre les objets en cache plus lourd. Si je place manuellement un fichier dans le dossier de contenu statique, il servira correctement. Si le code ci-dessus (d'un pool d'applications différent) enregistre un fichier, les autorisations sont très inhabituelles. Je vais joindre des captures d'écran.
Le fichier "par défaut" est celui que j'ai collé manuellement. Il a correctement hérité des autorisations du dossier parent. Le nom de fichier hashed a été enregistré par le code ci-dessus et il n'hérite pas des autorisations correctement. Lorsque j'essaie d'accéder au fichier, j'obtiens un message d'erreur très basique d'IIS, dont l'intégralité est "La page ne peut pas être affichée car une erreur interne du serveur s'est produite". Pas de style, rien que je suis habitué à voir avec les erreurs IIS. Si j'ajoute manuellement des autorisations de lecture au compte IIS_IUSRS, tout fonctionne comme prévu. Pourquoi cela se produit-il? Que puis-je faire pour l'atténuer? Mon code doit-il être mis à jour?
captures d'écran Publier des boîtes de dialogue avancées aussi. –
Photos supplémentaires affichées. –