daTom Geschrieben 8. Oktober 2008 Geschrieben 8. Oktober 2008 Hallo, ich habe hier eine ASP.NET (3.5) Seite, auf der ein Grid angezeigt wird. Ich habe nun die Anforderung, dass aus dem Inhalt des Grids eine Batch Datei generiert werden soll, die der User dann herunterladen kann. Das Erstellen der Datei und funktioniert wunderbar. Der Download klappt auch soweit, allerdings stosse ich hier auf eine kleine Schwierigkeit, bei der ich gerade nicht weiter weiß. Hier erstmal der Code string fileName = Server.MapPath("Stapel.bat"); System.IO.FileInfo fInfo = new System.IO.FileInfo(fileName); fInfo.Delete(); object oDS = this.Session["data"]; DataSet ds; if (oDS != null && oDS is DataSet) { ds = (DataSet)oDS; StreamWriter sWriter = new FileInfo(Server.MapPath("Stapel.bat")).CreateText(); foreach (DataRow o in ds.Tables[0].Rows) { sWriter.WriteLine("call clb " + o[0].ToString()); } } Response.AddHeader("Content-Disposition", "attachment; filename=" + fInfo.Name); Response.AddHeader("Content-Length", fInfo.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.WriteFile(fInfo.FullName); Response.End(); Mir ist aufgefallen, dass StreamWriter sWriter = new FileInfo(Server.MapPath("Stapel.bat")).CreateText(); die Datei in mein Projektverzeichnis ablegt. Ich weiß nicht wie der Pfad auf dem Server aussehen würde, allerdings liegt hier gerade mein Problem. Dadurch, dass die Datei dort in dem Pfad gespeichert wird, kann es passieren, dass 2 Benutzer gleichzeitig auf den Pfad zugreifen wollen. Das ist natürlich alles andere als schön, allerdings fällt mir im Moment keine gescheite Lösung für das Problem ein. Ich hatte schon überlegt einen Ordner (Zufallszahl) anzulegen, allerdings ist dann das Löschen der Datei beim Beenden der Sitzung etwas schwieriger. Dafür gibt es doch bestimmt eine elegantere Lösung?! Hat jemand von euch vielleicht nen Tip für mich?
daTom Geschrieben 19. Oktober 2008 Autor Geschrieben 19. Oktober 2008 Ok, ich habe eine Lösung gefunden. Ich habe eine Global.asax Datei erstellt. In der Methode Session_Start lege ich nun den Ordner mit der ID an und speicher mir den absoluten Pfad in einer Session Variable. Analog dazu hol ich mir in der Session_End Methode den Pfad aus der Session Variable heraus und lösche das Verzeichnis mit der absoluten Pfadangabe. Server.MapPath kann man leider nicht in der Session_End Methode verwenden, deswegen muss ich den Schritt mit der absoluten Pfadangabe machen. Gruß
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden