C# 如何将path与WebRootPath结合起来

C# 如何将path与WebRootPath结合起来,c#,asp.net-core,C#,Asp.net Core,我需要上传一些文件到服务器使用我的应用程序,我需要提供一个完整的路径的文件夹,我想保存文件。 我正在使用Path.Combine方法和webHostEnvironment.WebRootPath附加文件夹appsettings.json中的路径和文件名。 代码如下所示: var pathString = configuration.GetValue<string>("UploadPaths:Pictures"); var path = Path.Combine(webHostEnvi

我需要上传一些文件到服务器使用我的应用程序,我需要提供一个完整的路径的文件夹,我想保存文件。 我正在使用Path.Combine方法和webHostEnvironment.WebRootPath附加文件夹appsettings.json中的路径和文件名。 代码如下所示:

var pathString = configuration.GetValue<string>("UploadPaths:Pictures");
var path = Path.Combine(webHostEnvironment.WebRootPath, pathString, picture.Name);
问题是webHostEnvironment.WebRootPath只是放在path变量path中,看起来像pathString+picture.Name

知道如何获得正确的路径吗?

您应该签出path.Combine。可能会发生一些奇怪的事情。根据您所描述的,似乎来自配置文件的pathString中有根,即它不是相对路径

var path = Path.Combine("path1", "c:\path2", "path3");
// path is c:\path2\path3, since an argument with a root overrides any previous argument
您应该签出Path.Combine。可能会发生一些奇怪的事情。根据您所描述的,似乎来自配置文件的pathString中有根,即它不是相对路径

var path = Path.Combine("path1", "c:\path2", "path3");
// path is c:\path2\path3, since an argument with a root overrides any previous argument

在ASP.NET Core中,可以通过注入和查询IHostingEnvironment服务来检索web根目录和内容根目录的物理路径:


您可以查看。

在ASP.NET Core中,可以通过注入和查询IHostingEnvironment服务来检索web根目录和内容根目录的物理路径:


您可以查看。

如果您使用的是Asp.net core 3,则使用IWebHostEnvironment而不是IHostingEnvironment。 将IWebHostEnvironment作为依赖项注入依赖类

当Microsoft.Extensions.Hosting在2.1中引入时,某些类型 就像IHostingEnvironment和IApplicationLifetime是从 Microsoft.AspNetCore.Hosting。某些3.0更改导致应用程序包括 Microsoft.Extensions.Hosting和Microsoft.AspNetCore.Hosting 名称空间。任何使用这些重复类型的行为都会导致歧义 引用两个命名空间时发生引用编译器错误

此错误已在3.0.0-preview3中通过标记 以下类型已过时并替换为新类型。有 没有对新类型进行任何行为更改,只有命名

Obsolete types (warning):

Microsoft.Extensions.Hosting.IHostingEnvironment
Microsoft.AspNetCore.Hosting.IHostingEnvironment
Microsoft.Extensions.Hosting.IApplicationLifetime
Microsoft.AspNetCore.Hosting.IApplicationLifetime
Microsoft.Extensions.Hosting.EnvironmentName
Microsoft.AspNetCore.Hosting.EnvironmentName

New types:

Microsoft.Extensions.Hosting.IHostEnvironment
Microsoft.AspNetCore.Hosting.IWebHostEnvironment : IHostEnvironment
Microsoft.Extensions.Hosting.IHostApplicationLifetime
Microsoft.Extensions.Hosting.Environments
请注意,新的外部环境是开发、生产等。 扩展方法位于Microsoft.Extensions.Hosting命名空间中 可能需要将其添加到您的应用程序中

对于3.0版,旧型和新型均可从HostBulder的 以及WebHostBuilder的依赖项注入容器。旧式 将在4.0中删除


如果您使用的是Asp.net core 3,那么请使用IWebHostEnvironment而不是IHostingEnvironment。 将IWebHostEnvironment作为依赖项注入依赖类

当Microsoft.Extensions.Hosting在2.1中引入时,某些类型 就像IHostingEnvironment和IApplicationLifetime是从 Microsoft.AspNetCore.Hosting。某些3.0更改导致应用程序包括 Microsoft.Extensions.Hosting和Microsoft.AspNetCore.Hosting 名称空间。任何使用这些重复类型的行为都会导致歧义 引用两个命名空间时发生引用编译器错误

此错误已在3.0.0-preview3中通过标记 以下类型已过时并替换为新类型。有 没有对新类型进行任何行为更改,只有命名

Obsolete types (warning):

Microsoft.Extensions.Hosting.IHostingEnvironment
Microsoft.AspNetCore.Hosting.IHostingEnvironment
Microsoft.Extensions.Hosting.IApplicationLifetime
Microsoft.AspNetCore.Hosting.IApplicationLifetime
Microsoft.Extensions.Hosting.EnvironmentName
Microsoft.AspNetCore.Hosting.EnvironmentName

New types:

Microsoft.Extensions.Hosting.IHostEnvironment
Microsoft.AspNetCore.Hosting.IWebHostEnvironment : IHostEnvironment
Microsoft.Extensions.Hosting.IHostApplicationLifetime
Microsoft.Extensions.Hosting.Environments
请注意,新的外部环境是开发、生产等。 扩展方法位于Microsoft.Extensions.Hosting命名空间中 可能需要将其添加到您的应用程序中

对于3.0版,旧型和新型均可从HostBulder的 以及WebHostBuilder的依赖项注入容器。旧式 将在4.0中删除


是的,所以这是唯一有效的.NET前核心3.0…是的,所以这是唯一有效的.NET前核心3.0。。。