ASP.NET MVC 中控制器可访问的文件路径

问题描述 投票:0回答:2

我使用以下代码来访问 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-mvc streamreader
2个回答
0
投票

您不应将内容文件放入 ASP.Net 文件夹结构中,因为部署应用程序时不会保留该内容。

如果您希望在运行时访问不想在 wwwroot 中存在的文件,请在项目中创建一个数据目录并将内容文件放在那里,同时将它们标记为解决方案中的内容并在构建过程中复制它们.

然后使用

Path.Combine(AppContext.BaseDirectory, /data/path/to/your.json)

从应用程序当前工作目录检索文件路径。


0
投票

解决方法:

using (var reader = new StreamReader(Server.MapPath("~/Areas/Communications/Data/Codes.json")))
© www.soinside.com 2019 - 2024. All rights reserved.