2016-08-08 20 views
1

Ich habe eine Asp.Net Core 1.0.0 App, die sowohl unter Linux als auch unter Windows läuft. In der App muss ich Dateien hochladen und in wwwroot Unterordner speichern. Ich bekomme IHostingEnvironment.WebRootPath und einen Unterordner angeben. Es funktioniert gut unter Windows, aber nicht unter Linux wegen Pfaden. Window's \ wird natürlich nicht funktionieren. Wie kann ich feststellen, ob meine App unter Windows oder Linux vom Controller ausgeführt wird, und einen geeigneten Pfadbegrenzer auswählen?Wie erkennt man das Betriebssystem, auf dem meine Asp.Net Core App läuft?

+0

Wenn Sie das Betriebssystem verwenden, können Sie wollen wissen, 'RuntimeInformation' oder' Environment' verwendet werden kann https://github.com/dotnet/corefx/issues/9729 –

+1

wie DavidG erwähnt, können Sie abstrahieren, ob es "/" oder "\" ist, indem Sie Path-Methoden verwenden, um Ihnen Verzeichnisse zu geben. – mmcrae

+0

überprüfen Sie diesen Artikel https://codepedia.info/dotnet-core-to-detect-operating-system-o-splatform/ –

Antwort

3

Stattdessen sollten Sie Path.Combine verwenden, um Verzeichnisnamen zu generieren. Zum Beispiel:

var root = env.WebRootPath; 
var myDirectory = Path.Combine(root, "subdirectory"); 
+0

Vielen Dank! Es funktioniert super! Ich kannte die 'Path'-Klasse und ihre Funktionen nicht – Slip