1

Ich habe eine Klassenbibliothek, in der ich eine Datei aus dem Anwendungspfad unter Verwendung des folgenden Codes zugreifen kann. Es funktioniert nicht auf azurblau, da es den Anwendungspfad nicht finden kann. Wie es funktioniert azurblau, wie es auf meinem lokalen Rechner funktioniert.Abrufen des Dateipfads in asp.net Klassenbibliotheksprojekt auf Azure WebApp

+0

Sie meinen Azure WebApp? – Youngjae

+0

Ja Azure WebApp – maxspan

+0

Natürlich wird es nicht auf azurblau gefunden! Wenn Sie Ihre Anwendung bereitstellen, stellen Sie ** Ihren Quellcode ** nicht nur die binären Artefakte bereit, die durch den Build/Publishing-Prozess erstellt wurden – Tseng

Antwort

3

Um einen genauen Dateipfad auf Ihrer Webanwendung zu erhalten, müssen Sie möglicherweise Test-und-Fehler haben.

Unter Code ist, was ich in ASP.NET-Projekt verwendet. Angenommen, Sie haben einen Ordner mit den Namen scenarios und filename Variable;

string rootPath; 
if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("HOME"))) 
    rootPath = Environment.GetEnvironmentVariable("HOME") + "\\site\\wwwroot\\bin"; 
else if (HttpContext.Current != null) 
    rootPath = HttpContext.Current.Server.MapPath("~"); 
else 
    rootPath = "."; 
string path = rootPath + "\\scenarios\\" + filename; 

Lassen Sie uns Werte für jede Bedingung sehen;

  1. Environment.GetEnvironmentVariable("HOME"): Dieser Wert ist für Azure WebApp. Azure WebApp verfügt über Standardumgebungsvariablen des Host-Stammverzeichnisses. Sie können die bereitgestellten Variablen als here

  2. HttpContext.Current überprüfen: Dieser Wert ist für Iisexpress mit OWIN Selfhost, wenn Sie auf dem Desktop entwickeln.

  3. rootPath = "."; Dieser Wert ist für den klassischen IIS.

So ist die beste Verknüpfung der veröffentlichten Filepath könnte zu finden sein wird

  1. Ihre Datei auf WebApp gut eingesetzt. Sie können die veröffentlichten Dateien mit WebApp > Advanced Tools (a.k.a Kudu) menu > Debug Console menu on top > CMD anzeigen. Es zeigt Ihnen Explorer-ähnliche Oberfläche im Browser.
  2. Versuchen Sie, ein Protokoll mit Dateipfad wie zu schreiben; Environment.GetEnvironmentVariable("HOME") + "\\site\\wwwroot\\bin\\" + yourdirectory + "\\" + SolutionName und überprüfen Sie, ob die Datei dort erfolgreich geladen wurde.
+0

Dieser Code für asp.net core. – maxspan

+0

@maxspan // 'Environment.GetEnvironmentVariable' funktioniert auch für Core. Probieren Sie es zuerst aus: 'HttpContext.Current' hat eine Alternative, da dieser Link https://stackoverflow.com/questions/38571032/how-to-get-httpcontext-current-in-asp-net-core beschreibt. Sie können das unterlassen Dieser Wert als Ihr Dev-Setup funktioniert gut. – Youngjae

Verwandte Themen