| 

.NET C# Java Javascript Exception

1
Hallo zusammen, ich versuche gerade zu Testtwecken ein Seite mit ein paar Videos einzurichten. Da der Name des abzuspielenden Video im Player ( Silverlight ) hartcodiert ist bennene ich das ausgewählte Video jeweils um. Das funktioniert auf meinem Entwicklungsrechner mit dem ASP.Net Development Server auch alles sehr gut.

Wnn ich das ganze aber auf einem Server mit IIS Server 7 veröffentlichen will kommt beim 2.Videoaufruf die Fehlermeldung: 'Der Vorgang konnt icht abgeschlossen werden weil die Datei "Viedeoname" im IIS Worker Process geöffnet ist.'
Offensichtlich schließt der IIS Process die Datei nach dem Umbenennen nicht.
Kann mir jemand einen Tip geben dazu geben ?

Der Vollständigkeit halber hier der Code zum Umbenenne der Datei:
Liegt der Fehler eventuell hier?

Danke im Voraus für Eure Bemühungen
AS

public class clsTools

{
const string playvideo = "playvideo.wmv";
private string ActualVideo = string.Empty ;



private string appPath
{
get
{
return System.Web.HttpRuntime.AppDomainAppPath + @"\ClientBin\";
}
}

//Umbenennen des gewählten Videos nach 'playvideo.wmv'
//und erzeugen einer Datei namens 'Originalname.tmp' zur Wiederherstellung des
//Originalnamens
public void SetVideo(string Videoname )
{

ResetFiles();

ActualVideo = Videoname;

var fi = new FileInfo(appPath + Videoname);
string tempfile = fi.Name.Replace(fi.Extension, ".tmp");

fi.MoveTo(appPath + playvideo );
File.Create(appPath + tempfile);
fi = null;
// Eine Methode .close oder .Dispose scheint es für FileInfo
// nicht zu geben.


}


// Rückgängigmachen der Umbenennung
public void ResetFiles()
{

FileInfo [] f = new DirectoryInfo(appPath).GetFiles("*.tmp");
if (f.Length > 0)
{
var fi = f[0];
var tempfile = fi.Name.Replace(fi.Extension, ".wmv");
File.Move(appPath + playvideo, appPath + tempfile);
fi.Delete();
fi = null;
}

}



}
News:
04.03.2011
Gast
11 2
1 Antwort
1
Hallo,

Codeausschnitt von Dir:
public void SetVideo(string Videoname )
{
ResetFiles();
ActualVideo = Videoname;
var fi = new FileInfo(appPath + Videoname);
string tempfile = fi.Name.Replace(fi.Extension, ".tmp");
fi.MoveTo(appPath + playvideo );
File.Create(appPath + tempfile);
fi = null;
// Eine Methode .close oder .Dispose scheint es für FileInfo
// nicht zu geben.
}

Für FileInfo selbst gibt es keine Close oder Dispose-Methode, das ist richtig. Wenn Du aber das Ergebnis Deiner File.Create-Anweisung in eine Variable schreibst, bekommst Du einen FileStream zurück. Bei diesem kannst Du dann Close() bzw. Dispose() aufrufen.

Also:
public void SetVideo(string Videoname )
{
ResetFiles();
ActualVideo = Videoname;
var fi = new FileInfo(appPath + Videoname);
string tempfile = fi.Name.Replace(fi.Extension, ".tmp");
fi.MoveTo(appPath + playvideo );
// UMGESCHRIEBEN: #Anfang:#
var tempFile = File.Create(appPath + tempfile);
tempFile.Close();
// UMGESCHRIEBEN: #Ende#
// natürlich muss vorher noch was mit der
// Datei passieren, sonst hat das keinen Sinn...
fi = null;
}


Ich hoffe das hilft Dir.

Grüße... Laurin
07.03.2011
Laurin 21 2
Hallo Laurin, vielen Dank für den Tipp.
Ich werde es gleich probieren und über das Ergebnis noch mal berichten.
– Gast 08.03.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH