asp.net-web-api 相关问题

ASP.NET Web API是一个用于为浏览器和移动设备等客户端构建HTTP服务的框架。它基于Microsoft .NET Framework,是构建RESTful服务的理想选择。

Netsuite oAuth 1.0 Get API 与 HTTPCLIENT 的集成

邮递员截图1 邮递员截图2 我目前正在致力于将 OAuth 1.0 身份验证集成到我的 C# Web API 项目中。我需要使用HMAC-SHA256签名方法,我遇到了

回答 1 投票 0

尝试将音频 blob 从 Angular 上传到 ASP.NET Web API

我正在尝试从 Angular 上传音频 blob 文件,但我在服务器端没有收到任何文件。我在 ApiDog 中测试了我的 ASP.NET Web API 代码,它运行正常,没有任何问题。我需要...

回答 1 投票 0

无法使用 FakeItEasy 设置返回值

我正在测试一些 Web Api 控制器。但是,我似乎找不到能够将返回值设置为列表的问题是什么。调试时,输出

回答 1 投票 0

使用 Entity Framework Core 和 ASP.NET Web API 将锻炼数据保存到数据库时遇到问题

我在尝试使用 Entity Framework Core 和 ASP.NET Web API 将锻炼数据保存到数据库时遇到困难。我有一个使用 WorkoutId、

回答 1 投票 0

.net8 中的 Spa 根路径配置

我读了很多相关内容,但这里或其他地方的问题都没有帮助我实现结果。 我们需要将我们的应用程序(ASP.NET API + Angular 客户端)作为单个应用程序发布并运行...

回答 2 投票 0

如何在 ASP.net Core c# 中创建自己的 ServiceCollectionExtension 并将依赖项作为参数传递

我尝试为我的服务“FdmMediator”创建自己的 ServiceCollectionExtension。 我想将服务“FdmMediator”注册为单例,并且需要传递一些参数。参数为

回答 1 投票 0

asp.net core webapi frombody参数大小限制

我在 ASP.NET Core 3.1 中实现了一个端点来检索大型 JSON 对象,当此 JSON 开始相对较大时,我遇到了问题。我开始在 5~600KB 左右出现问题。 对于

回答 2 投票 0

ASP.NET WEB API 无法将多部分/表单数据(图像)上传到 Web 服务器

通过 ASP.NET WEB API 通过 localhost 成功上传图像后。我将项目上传到托管服务器,但这次我收到错误: 发生了错误 这是我的控制...

回答 1 投票 0

Asp.net Web API MVC 无法加载包

当我在 Visual Studio 2017 中创建新的 Web API 应用程序时,我遇到以下错误消息: 谁能告诉我如何解决这个问题吗?

回答 1 投票 0

我应该将电子邮件通知放在哪里 - 基础设施层还是应用程序层?

我正在学习洋葱架构,目前正在开发遵循此架构的后端服务。我想在我的应用程序中包含的功能之一是发送

回答 1 投票 0

Web Api 参数绑定:snake_case 到camelCase

我正在一个新的Web api项目上做一些工作,我的方法/参数遵循标准的c#命名格式;方法名是PascalCase,参数是camelCase。 不幸的是我只是

回答 4 投票 0

将数据表合并为具有条件 asp.net Web API 的 JSON 数组

我有两个数据表 数据表 dt1 和 数据表 dt2. dt1 充满产品,dt2 充满产品口味。 两个表都有一个共同的 ID,即产品代码。 使用 newtonsoft JSON

回答 1 投票 0

Asp Net Core:HttpClient post请求出现问题:方法名称而不是参数

很高兴知道:这是一个有点奇怪的解决方案,但作为我在 OpenClassrooms 学习的一部分,这是我必须做的练习。 在 Asp Net Core 解决方案中,我有 4 个项目: HspFrontEnd 是一个...

回答 1 投票 0

MediatR:全局异常处理程序正在执行多次

我正在使用 MediatR 在 ASP.NET Web API 中实现 CQRS。为了捕获异常并将其记录到数据库中,我想使用全局异常处理程序: 公共类 GlobalRequestExceptionHandler 我正在使用 MediatR 在 ASP.NET Web API 中实现 CQRS。为了捕获异常并将其记录到数据库中,我想使用全局异常处理程序: public class GlobalRequestExceptionHandler<TRequest, TResponse, TException>(IMediator mediator, ILoggerService loggerService) : IRequestExceptionHandler<TRequest, TResponse, TException> where TRequest : notnull where TException : Exception { private readonly IMediator _mediator = mediator; private readonly ILoggerService _loggerService = loggerService; public async Task Handle(TRequest request, TException exception, RequestExceptionHandlerState<TResponse> state, CancellationToken cancellationToken) { try { if (IsLogSystemErrorCommandException(request)) return; var systemError = SystemError.Create(request.GetType().Name, exception.GetType().Name, exception.Message, exception.StackTrace, VentureDomain.Common, VentureModule.Common); var command = new LogSystemErrorCommand(systemError); var result = await _mediator.Send(command, cancellationToken); } catch (Exception ex) { _loggerService.Log(ex.Message, LogLevel.Error); } } private bool IsLogSystemErrorCommandException(object? errorObject) { return errorObject?.GetType() == typeof(LogSystemErrorCommand); } } 错误记录命令供参考: public class LogSystemErrorCommandHandler(DbContext context, IResultService resultService) : IRequestHandler<LogSystemErrorCommand, Result> { private readonly DbContext _context = context; private readonly IResultService _resultService = resultService; public async Task<Result> Handle(LogSystemErrorCommand request, CancellationToken cancellationToken) { _context.Add(request.SystemError); await _context.SaveChangesAsync(cancellationToken); return _resultService.CreateSuccess(); } } 但是,每当命令或查询的原始请求处理程序中抛出异常时,该处理程序就会执行 3/4 次,这意味着我将 3/4 的系统错误日志记录到数据库中。 我已经阅读过有关多次执行其他处理程序的信息,但我在服务注册中没有看到错误,就像某些帖子可能暗示的那样。 我为此使用了一个简单的扩展方法: public static class RequestRegistration { public static void AddSystemSurveillanceRequestHandlers(this MediatRServiceConfiguration configuration) { configuration.RegisterServicesFromAssembly(typeof(RequestRegistration).Assembly); } } 编辑: 我应该补充一点,每次调用异常处理程序时,调用堆栈都是相同的。原始请求处理程序仅运行一次。不将错误日志存储到数据库也不会阻止异常处理程序被多次调用。 原来我错过了一些重要的事情 使用 IRequestExceptionHandler 处理异常时,您需要使用 RequestExceptionHandlerState<TResponse> 将 SetHandled(TResponse) 设置为 handled。 您可以像这样调整上面的实现: public async Task Handle(TRequest request, TException exception, RequestExceptionHandlerState<TResponse> state, CancellationToken cancellationToken) { try { if (IsLogSystemErrorCommandException(request)) return; var systemError = SystemError.Create(request.GetType().Name, exception.GetType().Name, exception.Message, exception.StackTrace, VentureDomain.Common, VentureModule.Common); var logSystemErrorCommand = new LogSystemErrorCommand(systemError); var logSystemErrorResult = await _mediator.Send(command, cancellationToken); state.SetHandled(null!); } catch (Exception ex) { _loggerService.Log(ex.Message, LogLevel.Error); } } 请注意,使用添加的 null! 作为参数,而该方法实际上需要一个非空值,但是如果您进入源代码,您可以看到 TResponse? 中的 state 属性本身可为空,并且.SetState()方法实际上只是传递你的价值。它不是最好的解决方案,但如果没有任何其他解决方案来实际使用正确的值,应该没问题。 使用类似结果模式的方法 我将返回的数据包装在结果记录中,如下所示: public record Result(ResultCode Code, object? Message); public record Result<TData>(ResultCode Code, object? Message, TData? Data) : Result(Code, Message); 这就是为什么我选择尝试实例化一个正确的结果来表示请求期间发生了异常: public class GlobalRequestExceptionHandler<TRequest, TResponse, TException>(IMediator mediator, ILoggerService loggerService) : IRequestExceptionHandler<TRequest, TResponse, TException> where TRequest : notnull where TException : Exception { private readonly IMediator _mediator = mediator; private readonly ILoggerService _loggerService = loggerService; public async Task Handle(TRequest request, TException exception, RequestExceptionHandlerState<TResponse> state, CancellationToken cancellationToken) { try { if (IsLogSystemErrorCommandException(request)) return; var requestName = request.GetType().Name; var systemError = SystemError.Create(requestName, exception.GetType().Name, exception.Message, exception.StackTrace, VentureDomain.Common, VentureModule.Common); var logSystemErrorCommand = new LogSystemErrorCommand(systemError); var logSystemErrorResult = await _mediator.Send(logSystemErrorCommand, cancellationToken); var exceptionResult = GetExceptionResult(requestName); state.SetHandled(exceptionResult!); } catch (Exception ex) { _loggerService.Log(ex.Message, LogLevel.Error); } } private bool IsLogSystemErrorCommandException(object? errorObject) { return errorObject?.GetType() == typeof(LogSystemErrorCommand); } private TResponse? GetExceptionResult(string requestName) { var resultType = typeof(TResponse); if (resultType == typeof(Result)) return (TResponse?)Activator.CreateInstance(typeof(TResponse), ResultCode.Exception, requestName); else if (IsResultWithGenericData(resultType)) return (TResponse?)Activator.CreateInstance(typeof(TResponse), ResultCode.Exception, requestName, null); return default; } private bool IsResultWithGenericData(Type resultType) { var genericDataResultType = typeof(Result<>); var typeArguments = resultType.GetGenericArguments(); if (typeArguments.Length == 1) { var genericTypeDefinition = resultType.GetGenericTypeDefinition(); return genericTypeDefinition == genericDataResultType; } return false; } }

回答 1 投票 0

jwt Web 令牌应该加密吗?

我正在阅读有关 JWT Web 令牌作为发送给用户的访问令牌的文章。其中一些提到网络令牌应该能够被用户解码。 这是否意味着它很糟糕

回答 5 投票 0

如何在JS中构造一个与C#中的对象相对应的对象[已关闭]

我使用.Net Web API,我想获取C#中对象的结构并将其发送到前面,以便它可以像后面一样构造对象。 我不知道如何获得我的o的确切结构...

回答 2 投票 0

Aspnetcore.Identity.EntityFramework 6.0.9,SignInManager 不起作用

我正在使用 Microsoft.AspNetCore.Identity.EntityFrameworkCore 6.0.9 Nuget 包,我无法使用 SignInManager 方法。 这个方法是否已被其他方法取代,或者我在某些地方犯了错误

回答 1 投票 0

在 swagger 中启用身份验证

我创建了一个在.net6上运行的asp.net core空项目。当我尝试在 swagger 中启用身份验证时遇到一个问题。 Swagger UI 按预期运行,唯一的问题是每当我...

回答 3 投票 0

错误 401 未经授权。 ASP.NET 核心。使用 JWT 创建身份验证/授权

我正在使用 JWT 创建身份验证/授权。我得到了令牌: 创建令牌,但将其粘贴到 swagger 后仍然出现错误 401 来自服务器的无效令牌响应 这是 jwt 解码...

回答 1 投票 0

如何将Serilog日志文件分割成多个文件?

我正在尝试按 SourceContext 拆分日志。 花了几天时间阅读文档和很多很多帖子后,我有了这个配置,但没有解决方案: “串行日志”:{ “你……

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.