.net - Flytning af tempfile til anden mappe gør det utilgængeligt

Indlæg af Hanne Mølgaard Plasc

Problem



I min asp.net-applikation på Windows Server 2008 har jeg kode som denne


tempfile = Path.GetTempFileName()
... Write data to tempfile ...
File.Move(tempfile, storageDir + fileName)


Det virker fint. Problemet er bagefter, når jeg forsøger at få adgang til filen uden for ASP.NET. Jeg nægtes adgang, selvom den bruger, jeg har adgang til, har (rekursiv) læse rettigheder til mappen storageDir .


Det ser ud til, at den flyttede fil ikke arver rettigheder fra den mappe, den er flyttet ind. Er det korrekt, og i så fald er der en nem måde at rette op på?


Lige nu som en direkte løsning har jeg ændret alle forekomster af File.Move () i min ASP.NET applikation til File.Copy () + File.Delete (), som synes at løse problemet. Men det føles som en meget beskidt måde at gøre ting på.

Bedste reference


Den adfærd du beskriver er af design:


Flytning af en fil genberegner ikke arvede tilladelser. [3]


Jeg synes, du har allerede beskrevet den nemmeste måde at løse dette på: 'Kopier og slet' i stedet for 'Flyt'.

Andre referencer 1


Programmet hæver sandsynligvis filen.


Du skal måske frigive ressourcen. Det er svært at fortælle fra din kodestykke, hvordan du behandler filen, men prøv noget som tempfile.Dispose().