Blazor 模板似乎遵循这个顺序来编写组件和页面:
@page "/users"
<h1>List of users</h1>
@code{
// your code here
}
我想知道,在 HTML 之前使用代码块是否存在任何已知的不便。因此:
@page "/users"
@code{
// your code here
}
<h1>List of users</h1>
Blazor 模板似乎遵循这个顺序来编写组件和页面:
@page "/users"
<h1>List of users</h1>
@code{
// your code here
}
我想知道,在 HTML 之前使用代码块是否存在任何已知的不便。因此:
@page "/users"
@code{
// your code here
}
<h1>List of users</h1>
我有一个 ASP.NET Core 8.0 Web API 的默认模板。我添加了以下包:
<PackageReference Include="Hangfire.AspNetCore" Version="1.8.14" />
<PackageReference Include="Hangfire.Core" Version="1.8.14" />
<PackageReference Include="Hangfire.MemoryStorage" Version="1.8.1.1" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.7" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
运行应用程序时出现以下错误:
未处理的异常。System.InvalidOperationException:当前 JobStorage 实例尚未初始化。您必须在使用 Hangfire 客户端或服务器 API 之前设置它。对于 .NET Core 应用程序,请
IServiceCollection.AddHangfire
在配置服务时根据您的应用程序类型从 Hangfire.NetCore 或 Hangfire.AspNetCore 包中调用扩展方法,并确保使用基于服务的 API 而不是静态 API,例如IBackgroundJobClient
而不是BackgroundJob
和IRecurringJobManager
而不是RecurringJob
。
我尝试了以下 Hangfire 配置:
using Hangfire;
using Hangfire.MemoryStorage;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddHangfire(configuration => configuration
.SetDataCompatibilityLevel(CompatibilityLevel.Version_180)
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UseMemoryStorage());
builder.Services.AddHangfireServer();
var app = builder.Build();
// ...other default WebApi code here...
var backgroundJob = new BackgroundJobClient();
backgroundJob.Enqueue<MyBackgroundJob>(x => x.ProcessJob());
app.Run();
----
public class MyBackgroundJob
{
public void ProcessJob()
{
File.AppendAllText(path, DateTime.UtcNow.ToString());
}
}