Und auch, statt von der Einspritzung IApplicationEnvironment
können Sie PlatformServices.Default.Application.ApplicationBasePath
verwenden.
EDIT: Hier ist eine mögliche Implementierung von MapPath/UnmapPath als Erweiterungen PlatformServices
:
removed (see EDIT2)
EDIT2: Leicht modifizierte, IsPathMapped()
sowie einige Kontrollen hinzugefügt, um zu sehen, ob der Pfad Kartierungs-/unmapping ist wirklich benötigt.
public static class PlatformServicesExtensions
{
public static string MapPath(this PlatformServices services, string path)
{
var result = path ?? string.Empty;
if (services.IsPathMapped(path) == false)
{
var wwwroot = services.WwwRoot();
if (result.StartsWith("~", StringComparison.Ordinal))
{
result = result.Substring(1);
}
if (result.StartsWith("/", StringComparison.Ordinal))
{
result = result.Substring(1);
}
result = Path.Combine(wwwroot, result.Replace('/', '\\'));
}
return result;
}
public static string UnmapPath(this PlatformServices services, string path)
{
var result = path ?? string.Empty;
if (services.IsPathMapped(path))
{
var wwwroot = services.WwwRoot();
result = result.Remove(0, wwwroot.Length);
result = result.Replace('\\', '/');
var prefix = (result.StartsWith("/", StringComparison.Ordinal) ? "~" : "~/");
result = prefix + result;
}
return result;
}
public static bool IsPathMapped(this PlatformServices services, string path)
{
var result = path ?? string.Empty;
return result.StartsWith(services.Application.ApplicationBasePath,
StringComparison.Ordinal);
}
public static string WwwRoot(this PlatformServices services)
{
// todo: take it from project.json!!!
var result = Path.Combine(services.Application.ApplicationBasePath, "wwwroot");
return result;
}
}
EDIT3:PlatformServices.WwwRoot()
Rückkehr der tatsächliche Ausführungspfad und in .net Kern 2.0, DEBUG-Modus es xxx \ bin \ Debug \ netcoreapp2.0 ist, die offensichtlich nicht das, was erforderlich ist. Ersetzen Sie stattdessen PlatformServices
durch IHostingEnvironment
und verwenden Sie environment.WebRootPath
.
'MapPath' ist Teil von ASP.NET. –
Sie können die ApplicationBasePath-Eigenschaft im IApplicationEnvironment-Dienst verwenden, um den Stammpfad Ihrer Anwendung abzurufen ... neugierig, welches Szenario möchten Sie erreichen? –
@KiranChalla Es funktioniert, wunderbar, danke! Wenn Sie es wünschen, schreiben Sie es bitte als Antwort und ich werde es akzeptieren :) Und bezüglich Ihrer Frage - Ich möchte die Struktur meiner Datenbank (Tabellen, Funktionen, etc.) auf einem Server-Startup aufbauen. –