我想创建一个新的Handler,它扩展了DelegatingHandler,使我能够在进入控制器之前做一些事情.我已经在各个地方读过我需要从DelegatingHandler继承,然后像这样覆盖SendAsync():
public class ApiKeyHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// do custom stuff here
return base.SendAsync(request, cancellationToken);
}
}
Run Code Online (Sandbox Code Playgroud)
这是好的和花花公子,除了它没有做任何事情,因为我没有在任何地方注册!我再次在很多地方看到我应该在WebApiConfig.cs中这样做,但这不是Web API 的ASP.NET 核心版本的一部分.我试图找到类似于Startup.cs文件(Configure(),ConfigureServices()等)中的各种东西,但没有运气.
任何人都可以告诉我如何注册我的新处理程序?
c# asp.net-web-api asp.net-core-mvc asp.net-core asp.net-core-webapi
我使用 Visual Studio 2022 创建了该项目,并选择了 aspnet core 6 Web api 模板。我正在尝试在浏览器中设置 cookie,但似乎我遗漏了一些内容,因为它没有在“网络” > “应用程序” > “Cookies”下设置任何内容
我的前端是一个反应应用程序。目前还没有额外的库。这是运行命令后的默认项目npx create-react-app <project-name>。
我可以/weatherforecast毫无问题地调用端点。但由于某种原因,它没有设置cookie。
frontend call
const getData = async () => {
await axios.get("/weatherforecast");
};
Run Code Online (Sandbox Code Playgroud)
WeatherForecastController.cs
public IActionResult Get()
{
Response.Cookies.Append("myjwt", "ABCDE", new CookieOptions
{
Secure = true,
HttpOnly = true,
SameSite = SameSiteMode.None
});
return Ok();
}
Run Code Online (Sandbox Code Playgroud)
Program.cs
var builder = WebApplication.CreateBuilder(args);
const string AllowAllHeadersPolicy = "AllowAllPolicy";
builder.Services.AddCors(options =>
{
options.AddPolicy(AllowAllHeadersPolicy,
builder =>
{
builder
.WithOrigins(new[] { …Run Code Online (Sandbox Code Playgroud)