ASP.NET Core の Server.MapPath に相当するものは何ですか? 質問する

ASP.NET Core の Server.MapPath に相当するものは何ですか? 質問する

コントローラーにコピーしたいコードにこの行があるのですが、コンパイラーが次のようにエラーを出します。

「Server」という名前は現在のコンテキストに存在しません

var UploadPath = Server.MapPath("~/App_Data/uploads")

ASP.NET Core で同等の機能を実現するにはどうすればよいでしょうか?

ベストアンサー1

.NET 6 (.NET Core 3 以上)

例えば、~/wwwroot/CSS

public class YourController : Controller
{
    private readonly IWebHostEnvironment _webHostEnvironment;

    public YourController (IWebHostEnvironment webHostEnvironment)
    {
        _webHostEnvironment= webHostEnvironment;
    }

    public IActionResult Index()
    {
        string webRootPath = _webHostEnvironment.WebRootPath;
        string contentRootPath = _webHostEnvironment.ContentRootPath;

        string path ="";
        path = Path.Combine(webRootPath , "CSS");
        //or path = Path.Combine(contentRootPath , "wwwroot" ,"CSS" );
        return View();
    }
}

いくつかのトリック

また、コントローラーやサービスがない場合は、最後のパートに従って、そのクラスをシングルトンとして登録します。次に、次の操作を行いますStartup.ConfigureServices

services.AddSingleton<your_class_Name>();

最後に、your_class_Name必要な場所に注入します。


.NET Core 2

例えば、~/wwwroot/CSS

public class YourController : Controller
{
    private readonly IHostingEnvironment _HostEnvironment; //difference is here : IHostingEnvironment  vs I*Web*HostEnvironment 

    public YourController (IHostingEnvironment HostEnvironment)
    {
        _HostEnvironment= HostEnvironment;
    }

    public ActionResult Index()
    {
        string webRootPath = _HostEnvironment.WebRootPath;
        string contentRootPath = _HostEnvironment.ContentRootPath;

        string path ="";
        path = Path.Combine(webRootPath , "CSS");
        //or path = Path.Combine(contentRootPath , "wwwroot" ,"CSS" );
        return View();
    }
}

詳細

@Ashin に感謝しますが、IHostingEnvironmentMVC Core 3 では廃止されています!!

によるとこれ:

廃止されたタイプ (警告):

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 

したがって、IWebHostEnvironmentの代わりにを使用する必要がありますIHostingEnvironment

おすすめ記事