gpt4 book ai didi

asp.net - 如何在asp.net core中写入静态文件?

转载 作者:行者123 更新时间:2023-12-02 14:14:42 25 4
gpt4 key购买 nike

我正在制作一个写入静态文件 (.txt) 的示例。

我已经尝试过:

    public IActionResult Index()
{
string dt = DateTimeOffset.Now.ToString("ddMMyyyy");

string path = Path.Combine(_environment.WebRootPath, $"Logs/{dt}");

if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}

string filePath = Path.Combine(_environment.WebRootPath, $"Logs/{dt}/{dt}.txt");

using (FileStream fs = System.IO.File.Create(filePath))
{
AddText(fs, "foo");
AddText(fs, "bar\tbaz");
}

return View();
}

private void AddText(FileStream fs, string value)
{
byte[] info = new System.Text.UTF8Encoding(true).GetBytes(value);
fs.Write(info, 0, info.Length);
}

但它在 wwwroot 文件夹而不是项目的根目录中创建了所有内容。

1

我想在这里创建文本文件:

2

哪里可以编辑?

更新:

这就是我定义_environment的方式:

public class HomeController : Controller
{
private readonly IHostingEnvironment _environment;

public HomeController(IHostingEnvironment environment)
{
_environment = environment;
}
}

最佳答案

问题是您正在使用 IHostingEnvironment.WebRootPath以确定根文件夹。此属性是包含 Web 服务应用程序内容文件的目录的绝对路径 - 即 wwwroot 文件夹。相反,您应该使用 IHostingEnvironment.ContentRootPath属性将为您提供包含应用程序的目录的绝对路径。

例如:

var contentRoot = _environment.ContentRootPath;
var webRoot = _environment.WebRootPath;

//contentRoot = "C:\Projects\YourWebApp"
//webRoot = "C:\Projects\YourWebApp\wwwroot"

您可以使用 WebRootPath 并导航到其父目录,但如果由于某种原因您选择将 wwwroot 移动到其他位置,您的代码可能会损坏。最好使用一种能够在每个项目中每次都为您提供正确路径的方法。

关于asp.net - 如何在asp.net core中写入静态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44145376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com