如果在 Blazor WebAssembly 中使用 C# .NET 6 并遇到 Content-Disposition 不可访问的问题,可以使用以下代码示例解决:
在 Startup.cs 的 Configure 方法中添加以下代码:
app.Use(async (context, next) => { var response = context.Response; response.OnStarting(() => { if (!response.Headers.ContainsKey("Access-Control-Expose-Headers")) { response.Headers.Append("Access-Control-Expose-Headers", "Content-Disposition"); } return Task.CompletedTask; });
await next.Invoke();
});
然后,在使用 HttpClient 发送请求时,添加以下代码:
var response = await httpClient.GetAsync(url); response.EnsureSuccessStatusCode(); if (response.Content.Headers.TryGetValues("Content-Disposition", out var values)) { var contentDisposition = values.FirstOrDefault(); var fileName = contentDisposition?.Split(';').LastOrDefault()?.Split('=')?.LastOrDefault() ?? string.Empty; // 可以使用 fileName 做进一步处理 } // 其他处理 content 的代码
这些代码将确保 Content-Disposition 的值在响应头中暴露,以便客户端可以访问它。同时,还可以使用 response.Content.Headers.TryGetValues() 方法获取响应头中的 Content-Disposition 值。