【问题标题】:Blazor WASM - Link to file on .Server from .ClientBlazor WASM - 从 .Client 链接到 .Server 上的文件
【发布时间】:2021-11-04 14:44:21
【问题描述】:

我有一个 Blazor WASM 项目,其中包含 3 个解决方案:App.Client、App.Server 和 App.Shared。我想在 App.Client 中的页面上放置一个链接 <a href="path_to_file"></a>,该页面可以链接到 App.Server/files/file.txt 中的文件。我怎样才能做到这一点?我很惊讶如此简单的事情如此复杂。感谢您的帮助。

【问题讨论】:

  • 你已经陈述了你想要完成的事情。但不是什么阻止你完成它。是什么阻止您创建超链接?您能否以minimal reproducible example 的身份展示您尝试过的内容并清楚地解释它是如何不起作用的?
  • 我所做的是在页面上放置一个 链接,但是当点击它时没有做任何事。
  • 我尝试在线搜索,但我对缺乏解决方案感到惊讶。
  • “什么都不做”是什么意思?它是否指向预期的 URL?访问该 URL 是否会显示错误消息?请清楚,并编辑您的问题,以准确显示您尝试过的内容,并清楚地解释它如何无法满足您的需求。
  • 它将我重定向到localhost:5001/Server/files/file.txt,这只是一个空白页面

标签: c# asp.net blazor blazor-webassembly


【解决方案1】:

您需要将服务器配置为专门允许它。 “除非另有断言”的态度是一种安全特征。

当您的服务器项目中有“文件”文件夹时,添加这段代码:

app.UseStaticFiles();                     // leave this one in
app.UseStaticFiles(new StaticFileOptions
{
  FileProvider = new PhysicalFileProvider(
  System.IO.Path.Combine(env.ContentRootPath, "FiLes" )),  
  RequestPath = "/files"
});

StaticFileOptions 让您可以控制允许哪些扩展等。然后这应该可以工作:

<a href="/files/sample.html"></a>

【讨论】:

  • 抱歉,我到底应该在哪里添加这段代码?我是 Blazor 的新手,抱歉
  • 在 Server.Startup(或 net6 中的 Program.cs)中。你已经有了第一行。
  • 另外,是否可以让服务器“是的,除非另有声明”?只是好奇。再次感谢。
  • 你不应该这样做。
  • 但只是为了知识,有没有办法做到这一点?谢谢。
猜你喜欢
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多