标签: asp.net-core-staticfile

如何仅向授权用户提供静态文件?

我有一组Excel电子表格,我只想在授权用户的ASP.NET 5 webapp中提供这些电子表格.

  1. 我应该在哪里存储文件?我假设在wwwroot(例如,wwwroot/files).
  2. 如果在wwwroot中,如何仅允许授权用户访问?(我想将它们作为来自控制器的[Authorize] FileResult提供,但是这仍然保持文件可以通过我认为的URL直接访问.)
  3. 如何通过控制器中的FileResult操作引用wwwroot中的位置?

非常感谢!

c# asp.net-core asp.net-core-staticfile

25
推荐指数
3
解决办法
1万
查看次数

如何在 ASP .NET Core Web API 中映射回退,以便 Blazor WASM 应用程序仅拦截不发送到 API 的请求

我有一个 Blazor WebAssembly 解决方案,其中包含客户端项目、服务器项目和共享项目,基于 Microsoft 的默认解决方案模板。我正在使用 Google Chrome 在 Visual Studio 2019 预览版中进行编辑和调试。

该解决方案开箱即用,只有一个启动项目,即服务器应用程序。该服务器应用程序具有对客户端应用程序的项目引用。您可以通过在服务器项目属性中选中“启用 SSL”来将其设置为使用 HTTPS,我已经这样做了。

当您单击调试时,它可以完美运行。

现在我想更改它,以便 Blazor WASM 应用程序仅响应来自https://localhost:44331 的请求,而不响应对https://localhost:44331/api 的请求。这些请求应该由服务器应用程序的 API 控制器端点处理。因此,如果有人访问https://localhost:44331/api/something,并且不存在这样的 API 端点,他们应该从 API 收到 404 错误代码,并且不会被路由到通常的 Blazor 页面说“对不起,没有任何东西在这个地址。”

我想使用 URL 的这个额外的“/api”部分来保持对 API 的请求与对页面的请求分开。我认为这将更接近生产中的正常设置。我希望很清楚我要做什么。

这是一个带有路由属性的示例控制器声明:

namespace BlazorApp2.Server.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        // Etc.

        [HttpGet]
        public IEnumerable<WeatherForecast> Get()
        {
            //etc.
        }
///etc.
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我在 Startup.cs 中尝试过的,但它不起作用。任何人都可以提出一些取悦的建议吗?

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Etc. …
Run Code Online (Sandbox Code Playgroud)

iis-express asp.net-core blazor asp.net-core-staticfile blazor-client-side

8
推荐指数
3
解决办法
3933
查看次数

在 Blazor WebAssembly 解决方案中,如何在与服务器 API 不同的端口上托管 Blazor WASM 客户端应用程序

我有一个 Blazor WebAssembly 解决方案,其中包含客户端项目、服务器项目和共享项目,基于 Microsoft 的默认解决方案模板。我正在使用 Google Chrome 在 Visual Studio 2019 预览版中进行编辑和调试。

该解决方案开箱即用,只有一个启动项目,即服务器应用程序。该服务器应用程序具有对客户端应用程序的项目引用。您可以通过在服务器项目属性中选中“启用 SSL”来将其设置为使用 HTTPS,我已经这样做了。

当您单击调试时,它可以完美运行。

现在我想更改它,以便从https://localhost:44331提供我所有的 Blazor WASM 页面,并从https://localhost:44331/api提供服务器应用程序的 API 控制器端点

我想使用 URL 的这个额外的“/api”部分来保持对 API 的请求与仅在 Blazor 客户端应用程序中导航分开。因此,如果我请求“ https://localhost:44331/api/something ”,我知道我会在我的 Web API 中达到一个点,但是如果我请求“ https://localhost:44331/something ”,我知道我'我将点击 Blazor 客户端应用程序中的特定页面。我认为它也将更接近生产中的正常设置。

我希望很清楚我要做什么。

显而易见的起点似乎是将服务器应用程序属性的“调试”部分中的“应用程序 URL”设置更改为“ http://localhost:52708/api ”。该项目分配了一个“ https://localhost:44331/api ”的安全 URL 。我在客户端应用程序中保留了相同的设置,因此在客户端应用程序中,客户端应用程序属性的“调试”部分中的“应用程序 URL”设置仍然是“ http://localhost:52708 ”,项目分配了“ https://localhost:44331 ”的安全 URL 。

这打破了一切。

现在“ https://localhost:44331/ ”将我带到 404 Not Found 错误,“ https://localhost:44331/api ”将我带到一个页面,上面写着:

正在加载...
发生了未处理的错误。重新加载

那太容易了!有人知道获得我想要的环境的正确方法吗?

iis-express asp.net-core blazor asp.net-core-staticfile blazor-client-side

3
推荐指数
1
解决办法
4654
查看次数