小编ben*_*min的帖子

如何在 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
查看次数

通过重写 BlazorComponent.BuildRenderTree(RenderTreeBuilder builder) 创建组件

我正在学习 Blazor。 https://learn-blazor.com/

BuildRenderTree(RenderTreeBuilder builder)我在通过重写类的方法在 C# 中创建组件时遇到一些困难BlazorComponent

这是我的课程:

   public class TestComponent : BlazorComponent
    {
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            builder.OpenElement(1, "p");
            builder.OpenElement(2, "strong");
            builder.AddContent(3, "hello");
            builder.CloseElement();
            builder.CloseElement();

            base.BuildRenderTree(builder); // With or without this line it doesn't work
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在我的页面中使用它,如下所示:

<TestComponent></TestComponent>
Run Code Online (Sandbox Code Playgroud)

我已经在使用和不使用最后一行的情况下对其进行了测试base.BuildRenderTree(builder);,但无论哪种方式它都不会呈现。我把组件做得非常简单(只有一个段落标签、强标签和一个内容词),所以我不明白为什么它不会渲染。代码构建得很好。

有人可以看看我做错了什么吗?

.net c# blazor

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

在 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
查看次数