在ASP.NET Blazor中读取静态文件

时间:2019-09-26 05:51:56

标签: blazor .net-core-3.0 asp.net-core-3.0 blazor-client-side

我有一个客户端Blazor应用程序,

我想为我的客户端配置提供一个appsetting.json文件,就像我们在其中包含environment.ts 角形

为此,我将ConfigFiles文件夹保留在wwwroot下,并将json文件保留在其中

我正尝试如下操作,首先获取路径

 public static class ConfigFiles
{
    public static string GetPath(string fileName)
    {
        return Path.Combine("ConfigFiles", fileName);
    }
}

比阅读

public string GetBaseUrl()
    {
        string T = string.Empty;
        try
        {
            T = File.ReadAllText(ConfigFiles.GetPath("appsettings.json"));
        }
        catch (Exception ex)
        {
            T = ex.Message;
        }
        return T;
    }

但是我总是会出错

  

找不到路径“ /ConfigFiles/appsettings.json”的一部分。

我也尝试过内部GetPath方法

return Path.Combine("wwwroot/ConfigFiles", fileName);

但仍然是相同的错误

  

找不到路径“ wwwroot / ConfigFiles / appsettings.json”的一部分。

由于客户端blazor中没有IHostingEnvironment的概念,因此在此处读取静态json文件的方法是

1 个答案:

答案 0 :(得分:2)

  

我有一个客户端Blazor应用程序

好的,这意味着File.ReadAllText(...)Path.Combine(...)根本无法工作。 客户端意味着您可以在Android或Mac-OS或任何其他版本上运行。

Blazor团队以FetchData示例页面的形式为您提供了有关如何读取文件的完整示例。

forecasts = await Http.GetJsonAsync<WeatherForecast[]>("sample-data/weather.json");

这将为您获取wwwroot/sample-data中文件的内容
如果需要AllText,可以使用Http.GetStringAsync(...)

如果要按用户设置,请查看Blazored.LocalStorage程序包。