我使用以下代码来访问 JSON 文件:
using (var reader = new StreamReader("Areas/Communications/Data/Codes.json"))
{
}
代码中报告的文件位于 MVC 文件夹“Data”中,控制器位于:
区域/通信/控制器/MyController.cs。
当我执行代码时,抛出以下异常:
System.IO.DirectoryNotFoundException: Can't find a part of the path 'c:\windows\system32\inetsrv\Areas\Communications\Data\Codes.json'.
这是从控制器读取文件的好习惯还是我遗漏了一些东西?
您不应将内容文件放入 ASP.Net 文件夹结构中,因为部署应用程序时不会保留该内容。
如果您希望在运行时访问不想在 wwwroot 中存在的文件,请在项目中创建一个数据目录并将内容文件放在那里,同时将它们标记为解决方案中的内容并在构建过程中复制它们.
然后使用
Path.Combine(AppContext.BaseDirectory, /data/path/to/your.json)
从应用程序当前工作目录检索文件路径。
解决方法:
using (var reader = new StreamReader(Server.MapPath("~/Areas/Communications/Data/Codes.json")))