有关不依赖于MVC视图或Razor页面的ASP.NET核心Web API和Web应用程序的问题
ASP.NET Core 8 Web API 未在 iis 中传递 Windows 用户
我有一个 ASP.NET Core Web API。当我在 Visual Studio 中使用 IIS Express 运行它时,Windows 身份验证工作正常。 但是,当我将 API 部署到 IIS 时,它无法使用 Windows 身份验证。我...
如何在 Kestrel 上运行的 ASP.NET Core 应用程序中与 gMSA 帐户协商身份验证
我有一个 ASP.NET Core Web API,它在使用 Kestrel Web 服务器的本地 AD 环境测试中作为 gMSA(组托管服务帐户)下的 Windows 服务运行。 应用程序使用协商身份验证(
ASP.NET Core Web Api 发送 Access-Control-Allow-Origin: null CORS header 和 chrome 出错,如何修复?
昨天我设法让我的 API 在我的本地计算机上工作,但是今天(相同的代码)在另一台计算机上,它不起作用,我在控制台上收到此错误: 加载失败http://
在 ASP.NET Core Web API 中,添加 Microsoft.AspNetCore.HttpLogging 以包含请求和响应非常容易。 在我的启动中,在使用 builder.Build() 构建应用程序之前,我添加以下代码:
这是在 .NET Core 中创建的任何服务的普遍问题。我创建了一个新的 SampleService (ASP.NET Core 6 Web API)。我添加了一个控制器(Ping),其中一种方法在 hi 上返回“OK”...
ASP.NET Core 8 Web API:无法从单例注册作用域服务
在我的 API 中,我使用 AddHostedService 注册了一些服务,这些服务需要注入一些接口,例如: 程序.cs: builder.Services.AddScoped 在我的 API 中,我使用 AddHostedService 注册了一些服务,这些服务需要注入一些接口,例如: Program.cs: builder.Services.AddScoped<IHypervisorRepository, HypervisorRepository>(); builder.Services.AddScoped<IAccountRepository, AccountRepository>(); builder.Services.AddScoped<ICloudStackDbUnitOfWork, CloudStackDbUnitOfWork>(); builder.Services.AddScoped<ICloudStackCoreConnectionFactory, MySqlCloudStackCoreConnectionFactory>(); builder.Services.AddScoped<IJobUtility, JobUtility>(); builder.Services.AddScoped<IVdcUnitOfWork, VdcUnitOfWork>(); builder.Services.AddScoped<IMemoryCache, MemoryCache>(); builder.Services.AddHostedService<CheckDatabaseHealthBackgroundService>(); CheckDatabaseHealthBackgroundService.cs: public sealed class CheckDatabaseHealthBackgroundService : BackgroundService, IDisposable { private readonly IServiceProvider _provider; private readonly IJobUtility _jobUtility; private readonly IVdcUnitOfWork _unitOfWork; private readonly ICloudStackCoreConnectionFactory _connFactory; private readonly IMemoryCache _cache; private readonly ILogger<CheckDatabaseHealthBackgroundService> _logger; public CheckDatabaseHealthBackgroundService( IServiceProvider provider, IJobUtility jobUtility, IVdcUnitOfWork unitOfWork, ICloudStackCoreConnectionFactory connFactory, IMemoryCache cache, ILogger<CheckDatabaseHealthBackgroundService> logger) { _provider = provider; _jobUtility = jobUtility; _unitOfWork = unitOfWork; _connFactory = connFactory; _cache = cache; _logger = logger; } 但是在我启动 API 后,会抛出以下异常: System.InvalidOperationException:验证服务描述符“ServiceType:Microsoft.Extensions.Hosting.IHostedService 生命周期时出错:单例实现类型:CloudStackData.WebAPI.RefreshDiskTypeBackgroundService”:无法使用单例“Microsoft”中的作用域服务“Vdc.Libs.Data.IVdcUnitOfWork” .Extensions.Hosting.IHostedService'. System.InvalidOperationException:无法使用单例“Microsoft.Extensions.Hosting.IHostedService”中的范围服务“Vdc.Libs.Data.IVdcUnitOfWork” 读完这个错误后,我得出结论,我应该将 CheckDatabaseHealthBackgroundService 所需的服务添加为单例,而不是限定范围,所以我尝试了: Program.cs: builder.Services.AddScoped<IHypervisorRepository, HypervisorRepository>(); builder.Services.AddScoped<IAccountRepository, AccountRepository>(); builder.Services.AddScoped<ICloudStackDbUnitOfWork, CloudStackDbUnitOfWork>(); builder.Services.AddScoped<ICloudStackCoreConnectionFactory, MySqlCloudStackCoreConnectionFactory>(); builder.Services.AddSingleton<IJobUtility, JobUtility>(); builder.Services.AddSingleton<IVdcUnitOfWork, VdcUnitOfWork>(); builder.Services.AddSingleton<IMemoryCache, MemoryCache>(); builder.Services.AddHostedService<CheckDatabaseHealthBackgroundService>(); 现在抛出的异常是: System.InvalidOperationException:验证服务描述符“ServiceType:Microsoft.Extensions.Hosting.IHostedService 生命周期时出错:单例实现类型:CloudStackData.WebAPI.RefreshDiskTypeBackgroundService”:无法使用单例“Vdc”中的作用域服务“Vdc.Libs.Data.DbContextWrite” .Libs.Data.IVdcUnitOfWork'. 我开始陷入困境。 VdcUnitOfWork是我们创建的自定义类: public sealed class VdcUnitOfWork : EFDbUnitOfWork<DbContextWrite>, IVdcUnitOfWork, IUnitOfWork, IDisposable, IDbContextWrapper { public VdcUnitOfWork(DbContextWrite dbContext) : base(dbContext) { } } 并且 DbContextWrite 是另一个自定义类: public abstract class DbContextWrite : DbContext { protected DbContextWrite([NotNull] DbContextOptions options) : base(options) { } } 事实是,在使用 AddHostedService 添加托管服务后,我无法再运行 API(我有四个托管服务,但为了简化而只放了一个)。 有什么帮助吗? 要在 HostedService(单例)中使用作用域服务,您需要注入 IServiceScopeFactory(使用 .NET 8.0 中的主构造函数): public sealed class CheckDatabaseHealthBackgroundService (IServiceScopeFactory scopeFactory) : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) { // get scoped services: using var scope = scopeFactory.CreateScope(); var jobUtility = scope.ServiceProvider.GetService<IJobUtility>(); var unitOfWork = scope.ServiceProvider.GetService<IVdcUnitOfWork>(); var memoryCache = scope.ServiceProvider.GetService<IMemoryCache>(); // Use services here } }
目前我正在执行一项任务,需要根据用户凭据(电子邮件地址和密码)和一些 Id(例如: subscriptionId )为用户生成访问令牌。根据我的研究,我...
在 ASP.NET Core Web API 中使用中间件进行异常处理、身份验证和错误日志记录的最佳实践
我正在开发一个 ASP.NET Core Web API 项目,我正在尝试使用中间件实现一些全局功能。具体来说,我想处理以下内容: 全局异常处理:
SPA 集成问题:Next.js 和 ASP.NET Core Web API
我正在尝试将 Next.js (v14) 前端与 ASP.NET Core 8 Web API 后端集成。当我使用 app.UseSpa 时,我的 API 不起作用。 但是,当我注释掉 app.UseSpa 时,你可以在 app.Ru 之前看到...
为什么 ASP.NET Core Web API 在请求标头中传递不记名令牌时无法识别用户何时登录?
我使用 AspNetCore.Identity.MongoDbCore 包设置了一个基本的 ASP.NET Core 8 Web API 控制器来连接到 MongoDB 集合,并添加了 /api/user/{username} 端点。 程序.cs: 使用麦克风...
我在 ASP.Net Core Web API 应用程序中使用 JWT。对于 JWT,我需要一个令牌,我当前将其存储在 appsettings.json 中。它看起来像这样: “Jwt”:{ “令牌”:“
如何处理 ASP.NET Web API 中 DTO 中的 Id 属性
让我们考虑一个简单的 UserDTO: 公共记录 UserDTO(string Id, string Username); 这意味着在 Swagger UI 中,对于 POST 请求,将询问 Id 和 Username,但不会使用 Id。
如何本地化Json反序列化的异常消息?请求接口时传递了无效参数?
我的开发环境是.Net7 WebApi(开箱即用) 下面是相关代码。 DataAnnotations 我已经实现了本地化。 使用 System.ComponentModel.DataAnnotations; 命名空间 WebAp...
如何将序列化的 JSON 负载传递到 ASP.NET Core Web API 控制器
此 API 端点旨在接收序列化的 JSON 对象并将其传递给底层报告引擎。 使用 Microsoft.AspNetCore.Mvc; 使用Newtonsoft.Json.Linq; 命名空间服务器。
持续存在的 CORS 问题(Vue 3 / Axios + ASP.NET Core Web API(后端))
我很困惑。当运行我的 .net core 服务器然后将 vue proj 加载到与另一个文件相同的文件中时,我取得了部分成功。当我开始测试 axios/fetch 请求有什么问题时...
我有一个 Web 服务,它根据从客户端收到的请求返回对象。可以说,基于用户权限,我想向客户端隐藏一些属性值。 我有一个解决方案:...
如何在 .NET Core 3.1.x 上写入 HttpContext.Response.Body
我一直在尝试编写或设置 HttpContext.Response.Body 但无济于事。我发现的大多数示例都使用 Body.WriteAsync,但参数与示例不同。我试过了
.NET 中使用 SSL 的 Docker 容器之间的连接被拒绝
我有两个 C# ASP.NET Core 8 Web API 项目,名为 FrontEnd 和 DataLayer。 DataLayer 连接到数据库,FrontEnds 连接到 DataLayer。 项目和数据库都在 Docker 中...
Minimal API Swagger 文档在发布到 IIS 时不断返回 404
我有一个 ASP.NET Core 6.0 Minimal API。当我从 VS 在 IIS Express 中运行它时,Swagger 工作得很好,但我想将它发布到我的设备上的 IIS,这样我就不必总是从 VS 运行它。 问题...
Azure 表存储在本地工作,但不能从 Azure Web 应用程序工作
我的后端服务是 ASP.NET Core 6 Web API。我正在使用表存储来维护 API 日志,我有一个日志记录中间件,通常在 API 请求时将日志存储在 Azure 表存储中...