标签: blazor-server-side

自定义声明在 AspNetCore Identity cookie 中一段时间​​后丢失

我看到一个几年前就已经被问过的问题,它解释了与使用 AspNet Identity 时丢失自定义声明相关的问题。不幸的是,那里提到的解决方案对我不起作用,因为我在 .NET 6 Blazor Server 应用程序上使用 AspNet Core Identity。

问题是类似的(在下面几点解释):

  1. 我在登录期间添加了一些声明(这些声明来自某些 API 调用,而不是来自 Identity 数据库,因此我在登录期间添加它们)。

  2. 我可以从 Blazor 组件访问它们。

  3. 它在 30% 的情况下工作正常,但在 70% 的情况下,cookie 会丢失我在登录期间添加的自定义声明,并且我的应用程序会遇到问题。我什至无法弄清楚这些声明何时会丢失,因为在这两种情况下都没有发生这种情况,RevalidationInterval因为我用 1 分钟的时间跨度对其进行了测试,并且当我多次测试它时,它至少在 5 分钟内运行良好。搜索了一堆答案,但没有找到 AspNet Core Identity 的正确答案。

这就是我的代码的样子:

  1. Program.cs 中的身份设置
    builder.Services
    .AddDefaultIdentity<IdentityUser>(options =>
    {
        options.SignIn.RequireConfirmedAccount = false;
        // Set Password options here if you'd like:
        options.Password.RequiredLength = 6;
    })
    .AddRoles<IdentityRole>()
    .AddUserManager<ADUserManager<IdentityUser>>()
    .AddEntityFrameworkStores<ApplicationDbContext>();

    builder.Services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<ApplicationUser>>();

Run Code Online (Sandbox Code Playgroud)
  1. 在 Login.cshtml.cs 中登录期间添加声明
    public async Task<IActionResult> OnPostAsync(string returnUrl = null)
    {
        returnUrl ??= Url.Content("~/"); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-identity asp.net-core blazor-server-side .net-6.0

2
推荐指数
1
解决办法
1062
查看次数

MudBlazor 将内容对齐到抽屉底部

我有一个令人兴奋的 NavMenu 组件

<MudPaper Class="py-3" Elevation="0">
  <MudNavMenu>
   <MudNavLink Href="/" Match="NavLinkMatch.All">Home</MudNavLink>
   <MudNavLink Href="/posts" Match="NavLinkMatch.All">Articles</MudNavLink>
   <MudNavLink Href="/about" Match="NavLinkMatch.All">About</MudNavLink>
   </MudNavMenu>
  </MudPaper>
<MudSwitch @ref="@darkModeSwitch" *@ ... @* />
Run Code Online (Sandbox Code Playgroud)

那是在 a 里面MudDrawer。我真正想要的是将所有 NavLink 放在顶部,将开关放在底部,但我尝试过的所有操作似乎都没有效果。看起来该MudDrawer组件是在列表中一个接一个的事物上设置的。我缺少什么?或者有什么快速解决办法吗?

大多数情况下,我尝试在开关周围放置一个容器并为其提供顶部边距,并使用对齐和调​​整弹性类。

blazor blazor-server-side blazor-webassembly mudblazor

2
推荐指数
1
解决办法
509
查看次数

.net 8 中的服务器端 Blazor 组件,@onclick 事件未触发

在 .net 7 中的 Blazor 服务器中,我可以在 Page.blazor 中执行此操作:

@信息

<button class="btn btn-primary mt-2 btn-block" @onclick="SendMessage">发送消息

@code { 公共字符串消息 { 获取;放; }

private async Task SendMessage()
{
    message = "Hello";
}
Run Code Online (Sandbox Code Playgroud)

}

当您单击该按钮时,它会在页面上输出“Hello”。

但是,在 .net 8 中,在服务器端 Page.blazor 中的“Blazor Web 应用程序”(自动、服务器与 Web Assembly 混合)中,此按钮不起作用。

EditForm 中的按钮确实可以工作,但我不想使用它,我只想单击按钮来触发事件。

为什么这在 .net 8 中不起作用?我该如何做到这一点?

谢谢

asp.net-core blazor blazor-server-side .net-8.0 blazor-auto

2
推荐指数
1
解决办法
1796
查看次数

InteractiveWebAssembly 页面似乎需要在服务器端和客户端都声明服务

我正在从 Blazor WebAssembly 项目迁移到 .net 8“Blazor Web App”项目,该项目支持客户端和服务器渲染内容。

我对 IoC 的工作方式有点困惑。这是文档没有提到的事情,但在全新的“Blazor Web App”项目上清楚地再现了这一点:对于定义为的页面@rendermode InteractiveWebAssembly(例如Counter.razor带有注入的服务,如@inject ITestIoc testIoc),我必须ITestIoc在两个位置定义服务:Program.cs客户端项目和Program.cs服务器项目,即使它只在 wasm 内部使用。ITestIoc如果我错过了一处,它会抛出服务未定义的异常。

可能发生的情况是,它InteractiveWebAssembly首先在服务器端渲染页面,然后通过 wasm 进行所有进一步的交互。因此,“Blazor Web App”中的 WebAssembly 似乎与常规 WebAssembly 项目中的处理方式有所不同。我知道还有另一种类型的 WebAssembly 类型的项目,仅支持 wasm,但我也希望可以使用服务器端。所以我想知道是否有任何办法可以解决这个问题,如果我想要某些页面仅进行 wasm 渲染,而根本不需要服务器渲染?

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

2
推荐指数
1
解决办法
209
查看次数

如何创建API / IdentityServer / Blazor(服务器端)应用程序?

我尝试自己构建此应用程序,但是在此过程中遇到了几个绊脚石。我认为最好退后一步,更广泛地了解我尝试创建的内容。似乎没有任何关于如何制作所需内容的文档。(除非有人可以指出我可能错过的正确位置)

最终,我想要的是让Blazor(服务器端)应用程序进行API调用以使用应用程序中的数据,然后让IdentityServer4封装身份验证。我需要具有Azure以及ASP.net Identity作为可能的身份验证方法。

我已经尝试过并且能够创建一个也具有本地API的IdentityServer4。我可以致电Postman来获取令牌等。但是,在将Blazor(服务器端)应用程序与IdentityServer4绑定时,我很困惑。

我试图具体地问这个问题,但是根本没有得到任何结果。我希望从更大的角度来看可能会有所帮助。

看来odic-client.js是从IdentityServer4回调中获取数据的方法,但是,这似乎与Blazor(服务器端)中的.NET授权没有很好的结合。我如何使它们一起工作。

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

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

aspnetboilerplate 是否支持服务器端 Blazor

aspnetboilerplate 支持 Blazor 服务器端和/或 Blazor 客户端的任何计划

我去年问过这个问题,因为服务器端 Blazor 将于 9 月投入生产。样板人支持 Blazor 真的很好。我也是 Aurelia 的粉丝,但似乎他们不想做 Aurelia,因为它不常用,但它比 Angular/React 等要好得多。

aspnetboilerplate blazor-server-side blazor-client-side

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

Blazor 替代 JS window.location.href

有谁知道在任何事件(按钮单击等)中是否有任何替代 Javascript window.location.href()来替换 Blazor 服务器端用户地址栏中的 URL 的方法?或者我只需要使用 Blazor JavaScript 互操作并直接编写 JS?

c# blazor blazor-server-side

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

如何在服务器端 Blazor 组件中访问实体框架 DbContext 实体

我是 .NET Core 和 Blazor 的新手,主要有 WebForms 和 MVC 经验。

我发现的所有 Blazor 文档和教程都使用单独的 API 项目并通过 HttpClient 和 Json 序列化/反序列化访问数据。我明白为什么这对于使用 WebAssembly 的客户端 Blazor 来说是必要的,但是对于使用 SignalR 的服务器端Blazor,使用实体框架 DbContext 从组件的 .razor 文件直接访问数据库的最佳方法是什么?

例如,在 MVC 控制器中,您可以执行以下操作:

private ApplicationDbContext context = new ApplicationDbContext();
Run Code Online (Sandbox Code Playgroud)

然后通过执行以下操作来查询数据:

var things = context.Things.Where(t => t.ThingAttributes == something);
Run Code Online (Sandbox Code Playgroud)

在使用服务器端 Blazor 中的组件时,是否有一种干净且高效的方法?

很抱歉这个问题的广泛性质,请随时向我指出我应该已经阅读的博客、文档或教程。谢谢!

entity-framework-core blazor blazor-server-side

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


我可以使用服务器端 blazor 进行生产吗?

是的,我知道它已准备好用于生产,但我很害怕如果我用于生产,我可能会遇到一些代理问题或其他问题。我的飞机是启动一个blazor服务器端项目并在IIS中部署,我需要在IIS中进行任何设置更改吗?你们有没有人在生产中使用过blazor服务器端,您在部署时遇到过什么问题吗?

iis blazor blazor-server-side

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