You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# ASP.NET Core 8 MVC应用中读取IIS物理路径下的文件?

解决方法

方法一:直接指定目标文件路径

既然明确知道Navbar.json的位置是C:\Staging\appsdev\Navbar.json,可以直接跳过遍历逻辑,读取该路径的文件:

public class NavigationViewComponent: ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync()
    {
        // 直接指定目标文件路径
        string navbarFilePath = @"C:\Staging\appsdev\Navbar.json";

        if (!File.Exists(navbarFilePath))
        {
            // 文件不存在时返回空菜单,可根据需求调整逻辑
            return View("_ILIMSNavigation", new List<MenuItem>());
        }

        var jsonRawData = await File.ReadAllTextAsync(navbarFilePath);
        List<MenuItem> menuItems = JsonConvert.DeserializeObject<List<MenuItem>>(jsonRawData)!;
        return View("_ILIMSNavigation", menuItems);
    }
}

方法二:通过配置文件读取路径(推荐)

硬编码路径不利于后续维护,建议将路径配置到appsettings.json中:

  1. 在appsettings.json添加配置项:
{
  "NavigationSettings": {
    "NavbarJsonPath": "C:\\Staging\\appsdev\\Navbar.json"
  }
}
  1. 修改ViewComponent,注入IConfiguration读取配置:
public class NavigationViewComponent: ViewComponent
{
    private readonly IConfiguration _configuration;

    public NavigationViewComponent(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public async Task<IViewComponentResult> InvokeAsync()
    {
        string navbarFilePath = _configuration.GetValue<string>("NavigationSettings:NavbarJsonPath");
        
        if (string.IsNullOrEmpty(navbarFilePath) || !File.Exists(navbarFilePath))
        {
            return View("_ILIMSNavigation", new List<MenuItem>());
        }

        var jsonRawData = await File.ReadAllTextAsync(navbarFilePath);
        List<MenuItem> menuItems = JsonConvert.DeserializeObject<List<MenuItem>>(jsonRawData)!;
        return View("_ILIMSNavigation", menuItems);
    }
}

关键注意事项

  • 权限配置:确保IIS应用池的运行身份对C:\Staging\appsdev目录有读取权限,否则会出现文件访问拒绝错误。
  • 路径格式:Windows路径需用双反斜杠\\或逐字字符串@"路径",避免转义问题。

内容的提问来源于stack exchange,提问作者wenreloz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 01:18:12