J'ai cette ligne dans un code que je veux copier dans mon contrôleur, mais le compilateur se plaint que
Le nom 'Serveur' n'existe pas dans le contexte actuel
var UploadPath = Server.MapPath("~/App_Data/uploads")
Comment puis-je obtenir l'équivalent dans ASP.NET Core?
Dans Asp.NET Core, l’environnement d’hébergement a été résumé à l’aide de l’interface, IHostingEnvironment
La propriété ContentRootPath vous donnera accès au chemin absolu des fichiers de contenu de l'application.
Vous pouvez également utiliser la propriété WebRootPath si vous souhaitez accéder au chemin racine du serveur Web (dossier www par défaut).
Vous pouvez injecter cette dépendance dans votre contrôleur et y accéder comme suit:
public class HomeController : Controller
{
private readonly IHostingEnvironment _hostingEnvironment;
public HomeController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
public ActionResult Index()
{
string webRootPath = _hostingEnvironment.WebRootPath;
string contentRootPath = _hostingEnvironment.ContentRootPath;
return Content(webRootPath + "\n" + contentRootPath);
}
}
[~ # ~] met à jour [~ # ~]
IHostingEnvironment a été marqué comme obsolète avec .NET Core 3.0, comme indiqué par @ amir1 . Veuillez utiliser IWebHostEnvironment comme indiqué ci-dessous si le cadre cible est .NET Core 3.0:
public class HomeController : Controller
{
private readonly IWebHostEnvironment _hostingEnvironment;
public HomeController(IWebHostEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
public ActionResult Index()
{
string webRootPath = _hostingEnvironment.WebRootPath;
string contentRootPath = _hostingEnvironment.ContentRootPath;
return Content(webRootPath + "\n" + contentRootPath);
}
}
Merci à @ashin pour sa réponse mais IHostingEnvironment
est obsolète dans .Net Core 3 !!
selon this :
Types obsolètes (avertissement):
Microsoft.Extensions.Hosting.IHostingEnvironment
Microsoft.AspNetCore.Hosting.IHostingEnvironment
Microsoft.Extensions.Hosting.IApplicationLifetime
Microsoft.AspNetCore.Hosting.IApplicationLifetime
Microsoft.Extensions.Hosting.EnvironmentName
Microsoft.AspNetCore.Hosting.EnvironmentName
Nouveaux types:
Microsoft.Extensions.Hosting.IHostEnvironment
Microsoft.AspNetCore.Hosting.IWebHostEnvironment : IHostEnvironment
Microsoft.Extensions.Hosting.IHostApplicationLifetime
Microsoft.Extensions.Hosting.Environments
Vous devez donc utiliser IWebHostEnvironment au lieu de IHostingEnvironment.
public class HomeController : Controller
{
private readonly IWebHostEnvironment _webHostEnvironment;
public HomeController(IWebHostEnvironment webHostEnvironment)
{
_webHostEnvironment= webHostEnvironment;
}
public IActionResult Index()
{
string webRootPath = _webHostEnvironment.WebRootPath;
string contentRootPath = _webHostEnvironment.ContentRootPath;
return Content(webRootPath + "\n" + contentRootPath);
}
}