标签: blazor-server-side

服务器端 Blazor 不提供 HttpClient 进行注入

当我尝试注入 HttpClient 时,我在 razor 页面中收到错误:

未处理的承诺拒绝:错误:System.InvalidOperationException:无法为类型上的属性“Http”提供值。没有“System.Net.Http.HttpClient”类型的注册服务。

请审查并提供反馈。

.net inject blazor-server-side

7
推荐指数
1
解决办法
5549
查看次数

如何在同一个 Web 中同时使用 Blazor 客户端和服务器

我正在学习,并看到 2 种类型和Blazor的好处。client-sideserver-side

我想在同一个网络上使用两者,例如一个路径是client-side WebAssembly应用程序,另一个路径是server-side在服务器中运行代码的路径。

我见过Blazor Full-Stack模板(不太明白),但最新的模板包中缺少它。他们是故意删除的吗?(只剩下 2 个Blazor Server AppBlazor WebAssembly App

我从这个命令下载模板。

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.0.0-preview9.19465.2

可以client-sideserver-side合作吗?

blazor blazor-server-side asp.net-core-3.0 blazor-client-side

7
推荐指数
1
解决办法
3707
查看次数

Blazor 应用程序应使用什么缓存策略?

我一直在测试 Blazor,但找不到任何有关如何实现浏览器缓存的文档(无论是使用图像、css、js 等静态文件,还是下载的 dll 文件)。

是否可以在 Blazor 中缓存静态文件和 dll 文件?

c# blazor blazor-server-side blazor-client-side

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

ASP.NET Blazor 需要使用 InputSelect 进行验证

我正在尝试让Required 属性与InputSelect 一起使用,但验证在Blazor Server 中不起作用。该表格无需选择即可提交。有趣的是,当模型属性可为空时它会起作用。在 .NET 5.0 之前,它不适用于可空类型,因为 InputSelect 不支持它们。然而,我想要一个不可为 null 的必需属性,因为我想将 API 中的 dto 重用为模型,而且它在逻辑上是错误的。

在此输入图像描述

public class SomeModel
{
    [Required]
    public string SomeString { get; set; }

    [Required]
    public SomeEnum SomeEnum { get; set; }

    [Required]
    public SomeEnum? SomeNullableEnum { get; set; }

    [Required]
    public int SomeInt { get; set; }

    [Required]
    public int? SomeNullableInt { get; set; }
}

public enum SomeEnum
{
    A = 1,
    B = 2
}
Run Code Online (Sandbox Code Playgroud)

这一页

@page "/testrequired"
@using TestNET5BlazorServerApp.Data;


<EditForm Model="Model" OnValidSubmit="Submit"> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net blazor blazor-server-side

7
推荐指数
1
解决办法
8715
查看次数

Blazor - 当子组件 onclick 事件发生时执行父组件的方法

我需要onclick在子组件中发生该事件,ShowMessage在父组件中执行方法,传递message字符串作为参数。以下代码不起作用:

儿童剃须刀:

    <input type="text" @bind-value="@message" @onclick="OnClickCallback"/>

    <button @onclick="ChangePassword">Parent button</button>

@code {
    private string message;
    
    [Parameter]
    private string Message {get; set;}

    [Parameter]
    public EventCallback<MouseEventArgs> OnClickCallback {get; set;}

    [Parameter]
    public EventCallback<string> OnClick { get; set; }

    private async Task ChangePassword()
    {
        await OnClick.InvokeAsync(message);
    }
    
}
Run Code Online (Sandbox Code Playgroud)

父剃刀:

@page "/parent"

<Child @bind-Message="message" OnClickCallback="@ShowMessage"></Child>

<p>@message</p>

@code {
    private string message;

    private void ShowMessage(MouseEventArgs args, string e)
    {
        message = e;
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:无法从“方法组”转换为“EventCallback”OnClickCallback="@ShowMessage"

c# blazor blazor-server-side asp.net-blazor blazor-webassembly

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

Blazor 服务器应用程序 JavaScript 库不工作(Metronic 模板)

我有 Blazor 服务器端应用程序,其中我为 Metronic Bootstrap 模板添加了 JavaScript 和 CSS 库。

当我运行应用程序时,模板已完全加载,但 JavaScript 没有响应。

例如,当我单击侧面菜单(箭头图标)或展开列表,或单击用户配置文件下拉菜单时,所有这些部分都不起作用。

但是,当我注释掉该行时,Blazor 服务器库 ( blazor.server.js) 模板开始工作,但其他 Blazor 组件无法正常工作(例如计数器)。

_Host.cshtml文件Head部分添加了以下 CSS 引用:

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700" />    
<link href="assets/plugins/custom/fullcalendar/fullcalendar.bundle.css" rel="stylesheet" type="text/css" />
<link href="assets/plugins/global/plugins.bundle.css" rel="stylesheet" type="text/css" />
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

Body部分中添加了以下 JavaScript 参考。

<script src="_framework/blazor.server.js"></script>
<script src="./assets/plugins/global/plugins.bundle.js"></script>
<script src="./assets/js/scripts.bundle.js"></script>
<script src="./assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
<script src="./assets/js/custom/widgets.js"></script>
<script src="./assets/js/custom/apps/chat/chat.js"></script>
<script src="./assets/js/custom/modals/create-app.js"></script>
<script src="./assets/js/custom/modals/upgrade-plan.js"></script>
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下方法,但没有任何效果。看起来 Blazor 服务器应用程序在这些 JavaScript 文件加载到 DOM 之前正在渲染。我如何加载这些脚本并使其正常工作。任何帮助将非常感激。

<script src="_framework/blazor.server.js" autostart="false"></script>
<script> …
Run Code Online (Sandbox Code Playgroud)

asp.net metronic asp.net-core blazor blazor-server-side

7
推荐指数
1
解决办法
1955
查看次数

在 blazor 服务器应用程序中托管 Web api

我已在我的解决方案中添加了一个 webapi 项目,其中包含一个控制器来执行 HttpGet。Blazor服务器项目可以在本地很好地访问并部署。我可以在本地对服务进行邮递员调用,但部署的版本从我的 _Host 文件中向我提供 Blazor 连接失败消息。如何在不干扰 Blazor 的情况下从外部配置 webapi 访问?

我认为这可能是我需要解决的某种路由问题。我正在使用 .NET5,我的 webapi 启动有这个:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "myapp.WebApi v1"));
    }
    app.UseHttpsRedirection();
    app.UseRouting();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}
Run Code Online (Sandbox Code Playgroud)

WebApi程序.cs:

namespace myapp.WebApi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}
Run Code Online (Sandbox Code Playgroud)

Blazor 程序.cs:

namespace myapp.UI
{
    public class …
Run Code Online (Sandbox Code Playgroud)

asp.net-core-webapi blazor blazor-server-side

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

Blazor(服务器)- 良好实践:我需要控制器还是由服务处理任何内容

我是 .net、C# 新手,目前正在编写我的第一个 Blazor(服务器端)应用程序。后来我想迁移到 Blazor WebAssembly..

但是,我想到了一个问题,我需要控制器吗?
我知道 NestJS 形式的控制器 - 控制器处理 http 请求并使用服务进行数据交换和其他任务。

但是因为目前一切都是在服务器端处理的,所以不会发出 http 请求。所以我想不出这个(部门)可以派上用场的情况。


我是否误解或监督了某些事情?

此外,控制器是否在发出实际 http 请求的 WebAssembly Blazor 应用程序中使用?
因为在这里我可以想象这样的划分是有利的。


提前致谢。

.net c# blazor blazor-server-side blazor-webassembly

7
推荐指数
1
解决办法
5569
查看次数

我可以将 bootstrap 与 Mudblazor 控件一起使用吗?

我的应用程序都使用 bootstrap 5 css 框架,我不想改变它。如果我想使用 MudBlazor,我可以摆脱 Materialize 并仍然使用 bootstrap 吗?

blazor-server-side mudblazor

7
推荐指数
1
解决办法
1155
查看次数

Blazor 服务器:仅在 Firefox 中出现“未捕获(承诺)WebSocket 未处于打开状态”错误

我们编写了一个 Blazer Server 应用程序 (.NET 7.0),托管在 Windows Server 2019 上的 IIS 10 上。该应用程序在最新版本的 Chrome 或 Edge 下运行良好。然而,我们的一些用户使用最新版本的 Firefox,他们偶尔无法加载该应用程序的页面。我找不到无法加载的原因,而且您使用该应用程序的时间越长,这种情况就越有可能发生。

使用应用程序时保持开发者控制台打开,当网站加载失败时,我注意到以下情况:Uncaught (in promise) WebSocket is not in the OPEN stateUncaught (in promise) Error: cannot send data if the connection is not in the 'Connected' State.

我偶尔还会注意到 Chrome 的开发者控制台101 Switching Protocols发送了一个请求,其中包含 200 响应标头Upgrade: websocket。我不知道这是否意味着 SignalR 在某种程度上失败了,并且“原始”WebSockets 被用作 Chrome 中的后备,也许表明 Firefox 的后备尝试失败了?

我已经通过about:configFirefox确认network.http.http2.websockets设置为 true。我还重新启动了 IIS Web 服务器,以防万一导致问题,并确认 WebSockets 已作为 IIS 的一部分安装。

除此之外,我对 SignalR …

javascript firefox websocket signalr blazor-server-side

7
推荐指数
1
解决办法
1370
查看次数