Fehler beim Speichern von Dateien mit virtuellen Pfaden

This article was translated from English: Does it need improvement?
Translated
View the article in English

In ASP.NET-Anwendungen kann PdfDocument.SaveAs() mit einem Fehler wie diesem fehlschlagen:

IronPDF could not write to the file '~/PDFFiles/mydocument.pdf'. It may be open in a PDF viewer.

Die Nachricht weist auf eine gesperrte Datei hin, aber die tatsächliche Ursache ist gewöhnlich der Pfad. IronPDF schreibt auf die Festplatte und benötigt einen vollständig qualifizierten physischen Pfad, während ein Wert wie ~/PDFFiles/file.pdf ein virtueller ASP.NET-Pfad ist, den das Dateisystem nicht auflösen kann.

Den virtuellen Pfad in einen physischen Pfad umsetzen

Konvertieren Sie den virtuellen Pfad vor dem Speichern, indem Sie Server.MapPath() in ASP.NET Web Forms oder HostingEnvironment.MapPath() an anderer Stelle verwenden:

string virtualPath = "~/PDFFiles/mydocument.pdf";
string physicalPath = Server.MapPath(virtualPath); // or HostingEnvironment.MapPath outside Web Forms
pdf.SaveAs(physicalPath);
string virtualPath = "~/PDFFiles/mydocument.pdf";
string physicalPath = Server.MapPath(virtualPath); // or HostingEnvironment.MapPath outside Web Forms
pdf.SaveAs(physicalPath);
Imports System.Web

Dim virtualPath As String = "~/PDFFiles/mydocument.pdf"
Dim physicalPath As String = Server.MapPath(virtualPath) ' or HostingEnvironment.MapPath outside Web Forms
pdf.SaveAs(physicalPath)
$vbLabelText   $csharpLabel

Ein minimal funktionierendes Beispiel:

var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://example.com");
string physicalPath = Server.MapPath("~/App_Data/PDFFiles/output.pdf");
pdf.SaveAs(physicalPath);
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://example.com");
string physicalPath = Server.MapPath("~/App_Data/PDFFiles/output.pdf");
pdf.SaveAs(physicalPath);
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://example.com")
Dim physicalPath As String = Server.MapPath("~/App_Data/PDFFiles/output.pdf")
pdf.SaveAs(physicalPath)
$vbLabelText   $csharpLabel

Bevor Sie speichern

  • Verzeichnis existiert: Erstellen Sie den Zielordner und bestätigen Sie, dass die App Schreibrechte darauf hat.
  • Datei nicht geöffnet: Stellen Sie sicher, dass die Ausgabe nicht bereits in einem Viewer wie Adobe Reader geöffnet ist.
  • Eingeschränkte Orte: Führen Sie den Code mit ausreichenden Berechtigungen aus, wenn Sie in geschützte Ordner wie Program Files schreiben.
  • Pfad verifizieren: Protokollieren Sie während der Entwicklung den aufgelösten physischen Pfad, um zu bestätigen, dass er dorthin zeigt, wo Sie es erwarten.

WarnungVermeiden Sie die Festcodierung von Laufwerksbuchstaben in der Produktion; Lösen Sie Pfade zur Laufzeit, sodass die Anwendung über Umgebungen hinweg funktioniert.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 20,296,129 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPdf
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.