Blazor 应用程序的 app.config / web.config 解决方案是什么。我几乎可以肯定这对于 Blazor 服务器端项目是可能的。但更深入地想知道如何为客户端项目处理配置。
本质上,我需要知道应用程序在什么样的环境下运行(例如开发、测试、生产)。
Blazor 的配置故事是什么?
web-config asp.net-web-api asp.net-core blazor blazor-server-side
我想显示一个存储在数据库中的图像,我的 DAL 中有这个函数,我将它注入到名为 admin 的组件中:
public byte[] GetCategoryLabelImage(int categoryLabelID)
{
var categoryLabel = context.CategoryLabels.FirstOrDefault(cl => cl.Id == categoryLabelID);
byte[] image = categoryLabel?.Image?.Image;
return image;
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用这样的标签时:
<img src="@admin.GetCategoryLabelImage(label.Id)" />
Run Code Online (Sandbox Code Playgroud)
它什么也没显示,这是显示图像的正确方法吗?
我正在构建一个示例 razor 组件,但我的按钮 onclick 方法无法触发。当我单击按钮时,什么也没有发生。我什至在方法中放置了一个断点,以查看它是否捕获了它没有捕获的。该组件确实呈现,但正如我所说,单击按钮时,LoginUser 方法根本没有运行。
剃须刀组件页面:
<div class="text-center">
<Login FieldsetAttr="fieldsetAttr" UsernameAttr="usernameAttr" PasswordAttr="passwordInput"
ButtonAttr="buttonAttr" ButtonText="Sign In" SignInManager="SignInManager"
InvalidAttr="invalidAttr" />
</div>
@code {
Dictionary<string, object> fieldsetAttr =
new Dictionary<string, object>()
{
{"class", "form-group" }
};
Dictionary<string, object> usernameAttr =
new Dictionary<string, object>()
{
{"class", "form-control" },
{"type", "text" },
{"placeholder", "Enter your user name here." }
};
Dictionary<string, object> passwordInput =
new Dictionary<string, object>()
{
{"class", "form-control" },
{"type", "password" }
};
Dictionary<string, object> buttonAttr =
new Dictionary<string, object>()
{
{"class", …Run Code Online (Sandbox Code Playgroud) 我有一个解决 .NET Core 3.1 预览版 2 的现有 Blazor(服务器)应用程序。
我需要追溯添加本地 ADFS(不是 Azure)安全性。我一直在尝试在 ASP.NET Core 中使用 WS-Federation关注 Microsoft 的Authenticate users,但它顽固地忽略了安全性。这篇文章当然是为 ASP.NET 而写的,而不是 Blazor...
到目前为止我所做的是:
public static void ConfigureServices(IServiceCollection services)
{
services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddAuthentication()
.AddWsFederation(options =>
{
options.MetadataAddress = "https://adfs.Server.com/FederationMetadata/2007-06/FederationMetadata.xml";
options.Wtrealm = "https://localhost:44323/";
});
services.AddAuthorization();
services.AddRazorPages();
services.AddServerSideBlazor();
....
Run Code Online (Sandbox Code Playgroud)
值得关注的一件事- 数据库中的表当前支持早期的身份验证模式(成员资格?)(由我们正在重写的应用程序使用)。它有表 [AspNetRoles] [AspNetUserClaims] [AspNetUserLogins] [AspNetUserRoles] 和 [AspNetUsers]。这些会被覆盖吗?
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if …Run Code Online (Sandbox Code Playgroud) authentication authorization adfs asp.net-core blazor-server-side
您有一个主要组件,而在主要组件内部,您有许多子组件
您想刷新单个子组件,而不是主组件的整个屏幕,这可能吗?
我有一个带有身份的 Blazor 3.1 应用程序,我想在其中实施 cookie 同意横幅。
在经典的 ASP .NET Core 中,有一个很好的 cookie 同意横幅模板。
@using Microsoft.AspNetCore.Http.Features
@{
var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
var showBanner = !consentFeature?.CanTrack ?? false;
var cookieString = consentFeature?.CreateConsentCookie();
}
@if (showBanner)
{
<div class="container">
<div id="cookieConsent" class="alert alert-info alert-dismissible fade show" role="alert">
Use this space to summarize your privacy and cookie use policy. <a class="alert-link" asp-area="" asp-controller="Home" asp-action="Privacy">Learn More</a>.
<button type="button" class="accept-policy close" data-dismiss="alert" aria-label="Close" data-cookie-string="@cookieString">
<span aria-hidden="true">Accept</span>
</button>
</div>
</div>
<script>
(function () {
var button = …Run Code Online (Sandbox Code Playgroud) 我正在 blazor 服务器端制作一个聊天室应用程序。
我想显示每个用户的在线状态。
现在我可以使用该OnAfterRenderAsync事件来获取用户已进入该页面。
exit通过https://docs.microsoft.com/en-us/aspnet/core/blazor/lifecycle?view=aspnetcore-3.1在 blazor 生命周期中似乎没有任何事件
有人说我可以使用该Dispose事件来实现它,而它确实有效。
更重要的是,我有一个疯狂的想法,即使用 window.onbeforeunloadjs事件来调用blazor方法。
我不知道哪一个最好。你能给我一个建议吗?谢谢你。
我需要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
我有 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) 我已在我的解决方案中添加了一个 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) blazor ×7
asp.net-core ×5
c# ×4
asp.net ×2
.net-core ×1
adfs ×1
cookies ×1
metronic ×1
web-config ×1