私は自分のコントローラーにコピーしたいコードにこの行がありますが、コンパイラーは文句を言います
「サーバー」という名前は現在のコンテキストに存在しません
var UploadPath = Server.MapPath("~/App_Data/uploads")
ASP.NET Coreで同等の機能を実現するにはどうすればよいですか?
Asp.NET Coreでは、ホスティング環境はインターフェイス IHostingEnvironment を使用して抽象化されています
ContentRootPath プロパティにより、アプリケーションコンテンツファイルへの絶対パスにアクセスできます。
Webで使用可能なルートパス(デフォルトではwwwフォルダー)にアクセスする場合は、プロパティ WebRootPath を使用することもできます。
この依存関係をコントローラーに挿入し、次のようにアクセスできます。
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);
}
}
UPDATE
IHostingEnvironmentは、@ amir1 で指摘されているように、.NET Core 3.0では廃止されたとマークされています。ターゲットフレームワークが.NET Core 3.0の場合、以下に示すようにIWebHostEnvironmentを使用してください。
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);
}
}
@ashinの回答に感謝しますが、IHostingEnvironment
は.Net core 3ではobsoletedです!!
this に従って:
廃止されたタイプ(警告):
Microsoft.Extensions.Hosting.IHostingEnvironment
Microsoft.AspNetCore.Hosting.IHostingEnvironment
Microsoft.Extensions.Hosting.IApplicationLifetime
Microsoft.AspNetCore.Hosting.IApplicationLifetime
Microsoft.Extensions.Hosting.EnvironmentName
Microsoft.AspNetCore.Hosting.EnvironmentName
新しいタイプ:
Microsoft.Extensions.Hosting.IHostEnvironment
Microsoft.AspNetCore.Hosting.IWebHostEnvironment : IHostEnvironment
Microsoft.Extensions.Hosting.IHostApplicationLifetime
Microsoft.Extensions.Hosting.Environments
したがって、IHostingEnvironmentの代わりにIWebHostEnvironmentを使用する必要があります。
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);
}
}