ASP.NET Web API是一个用于为浏览器和移动设备等客户端构建HTTP服务的框架。它基于Microsoft .NET Framework,是构建RESTful服务的理想选择。
在我的 WebApi 2 项目中,我遵循服务模式以及工作单元和通用存储库模式。 所有控制器都有 try-catch,以防万一某个操作没有,我有一个全局
我第一次尝试在 .Net 8 中使用 HttpClient,但我无法让它正常工作。这可能是我错过的一件小事,但我正在努力弄清楚。 我有一个 API...
使用 RabbitMQ 合并 ASP.NET Web API 中的文件上传和模板创建消息
我正在使用 ASP.NET Web API 和 Angular 开发一个应用程序,具有两个主要功能: 文件上传: 用户可以上传文件,上传成功后,服务器会生成这些文件的 URL...
我需要一些关于我的 API 设计的建议。 作为示例,请考虑以下后端实现。有一种继承结构可以从一个(抽象)公共定义一些更具体的实体
ASP.NET Web API 执行因异常而停止,尽管在使用 Result 和 Wait 等待完成的异步调用中捕获了异常
我在 ASP.NET Web API 中遇到一个问题,即用于将异步 POST 发送到 API 的方法中抛出异常,即使我在方法调用周围有一个 try-catch 块。 .
如何在 HttpResponseMessage.Content.Headers.ContentType 中显示图像
我有一个返回图像的方法。如下: 字符串 fullName = dt.Rows[0]["FileName"].ToString(); 字符串directoryPath = MyFileMultipartFormDataStreamProvider.GetMyFileDirectory(); 变种
嘿,我在反应应用程序中遇到了问题,因为我是反应初学者。我有一个简单的应用程序。这是一个时间跟踪应用程序 它有一个简单的界面。非常基本的应用程序。问题是我有所有的清单
我有一个具有CRUD操作的WEB API。为了进行测试,我创建了一个控制台应用程序。创建和获取所有详细信息工作正常。现在我想通过使用 id 字段获取产品。下面是...
我的本地路径中有一个 nuget 包。我想添加该 nuget 包的引用。但每次我尝试安装该软件包时它都会向我显示 找不到 nuget 包的元数据 嗯...
我正在尝试通过我的 .NET 桌面应用程序读取 Web 服务 api。我已尝试以下操作,但没有填充任何内容。 通过 Fiddler,如果我单击 [Raw] 选项卡,响应如下所示:
Request.Content.IsMimeMultipartContent() 失败
我正在尝试使用 Html2 输入 type="file" 和 angular2 http.post 请求上传文件。当请求到达 web api 时,它失败了 Request.Content.IsMimeMultipartContent() 它...
在桌面浏览器中使用 Macbook 触摸板(或其他)进行多点触摸手势
我环顾四周,但找不到确凿的答案。是否可以在常规桌面浏览器中检测 Macbook 触摸板或其他笔记本电脑触控板的多点触摸手势和事件...
如何使用 MediatR 和 FluentValidation 实现通用 ValidationBehavion,以便 ValidationBehavion 仅在命令上触发
我正在使用 CQRS 并为了分隔命令和查询而创建了自定义接口,因此我希望我的 ValidationBehavion 仅在继承 IRequest 的自定义 ICommand 上触发 我正在使用 CQRS 并分离命令和查询,我创建了自定义接口,因此我希望我的 ValidationBehavion 仅在继承 IRequest 的自定义 ICommand 上触发,而不是在所有 IRequest 请求上触发。 为了分离命令和查询,我创建了自定义界面: (作为响应值,我使用 ErrorOr 库。但我认为不值得研究它,只需记住命令和查询总是有响应) public interface ICommand<TResponse> : IRequest<ErrorOr<TResponse>> { } public interface IQuery<TResponse> : IRequest<ErrorOr<TResponse>> { } public interface ICommandHandler<TCommand, TResponse> : IRequestHandler<TCommand, ErrorOr<TResponse>> where TCommand : ICommand<TResponse> { } public interface IQueryHandler<TQuery, TResponse> : IRequestHandler<TQuery, ErrorOr<TResponse>> where TQuery : IQuery<TResponse> { } 我知道一种标准方法,其中 IPipelineBehavior 会向任何请求者触发,然后我们检查该请求者是否有验证器: public class ValidationBehavion<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : IRequest<TResponse> where TResponse : IErrorOr { private readonly IValidator<TRequest>? _validator; public ValidationBehavion(IValidator<TRequest>? validator = null) { _validator = validator; } public async Task<TResponse> Handle(TRequest request, RequestHandlerDelegate<TResponse> next, CancellationToken cancellationToken) { if(_validator is null) { return await next(); } var validationResult = await _validator.ValidateAsync(request); if (validationResult.IsValid) { return await next(); } var validationErrors = validationResult.Errors .ConvertAll(error => Errors.Wands.NotValid( error.PropertyName, error.ErrorMessage)); return (dynamic)validationErrors; } } 由于命令和查询是分离的,我想我可以指定 ICommand 而不是 IRequest 并重做 ValidationBehavion,如下所示: public class ValidationBehavion<TRequest, TResponse> : IPipelineBehavior<TRequest, ErrorOr<TResponse>> where TRequest : ICommand<TResponse> { private readonly IValidator<TRequest> _validator; public ValidationBehavion(IValidator<TRequest> validator) { _validator = validator; } public async Task<ErrorOr<TResponse>> Handle(TRequest request, RequestHandlerDelegate<ErrorOr<TResponse>> next, CancellationToken cancellationToken) { var validationResult = await _validator.ValidateAsync(request); if (validationResult.IsValid) { return await next(); } var validationErrors = validationResult.Errors .ConvertAll(error => Errors.Wands.NotValid( error.PropertyName, error.ErrorMessage)); return validationErrors; } } 但是这个 IPipelineBehavior 根本不起作用,我不知道为什么。 您可能需要注册该行为。你的startup.cs应该看起来像这样: public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddMediatR(typeof(Startup)); services.AddValidatorsFromAssemblyContaining<Startup>(); // Register pipeline behaviors services.AddTransient(typeof(IPipelineBehavior<,>), typeof(LoggingBehavior<,>)); services.AddTransient(typeof(IPipelineBehavior<,>), typeof(AuthorizationBehavior<,>)); services.AddTransient(typeof(IPipelineBehavior<,>), typeof(PerformanceBehavior<,>)); services.AddTransient(typeof(IPipelineBehavior<,>), typeof(UnhandledExceptionBehavior<,>)); // Register request pre-processors and post-processors services.AddTransient(typeof(IRequestPreProcessor<>), typeof(ValidationPreProcessor<>)); services.AddTransient(typeof(IRequestPostProcessor<,>), typeof(LoggingPostProcessor<,>)); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } } 您在这里有完整的教程:https://argosco.io/using-ipipelinebehavior-irequestpreprocessor-and-irequestpostprocessor-in-a-net-core-api/net/
我正在尝试在我的 WebApi2 应用程序上实现 UNITY。 问题是我正在使用现有的 SqlConnection,具体取决于资源 URL 中找到的标识符。 所以我需要标识符
是否可以调用接受字符串来转义反斜杠的Web API? 调用语法为 /api/testapi/PostSomeData/{ID}/{text}。文本可以是 URL、文件路径或只是一些文本。如果...
无法加载文件或程序集“System.Web.Http,版本=5.0.0.0”
将 Microsoft.Aspnet.Webapi.Webhost 包安装到我的 Web api 项目后,我最终遇到以下异常: 无法加载文件或程序集“System.Web.Http,版本=5.0.0.0, 文化=
我无法将 ASP.NET Web API 与 .NET Maui 连接
我想将我的第一个毛伊岛测试应用程序与从 mongoDB 检索数据的 ASP.NET Web API 连接。当 ASP.NET Web API 运行时,我可以轻松地从 Swagger UI 检索数据,但是当它出现时......
ExceptionFilter OnExceptionAsync 与 OnException 之间的区别
就是这样。 在 MVC 或 Web APO 中编写自定义异常过滤器时,OnExceptionAsync 和 OnException 方法有什么区别? 是不是只有使用的时候才会调用OnExceptionAsync
我有一个 ASP.NET 8 WebApi 项目和另一个作为 WorkerService 的项目,它在 Windows 中执行一些后台任务。此外,我想在其中托管 WebApi 项目。 我愿意
Docker 以 https://localhost:0/swagger 开头
我正在尝试使用 docker 运行 .Net 7 简单应用程序 来自 mcr.microsoft.com/dotnet/sdk:7.0 AS build-env 曝光 80 工作目录/src 复制 。 。 运行 dotnet 恢复 运行 dotnetpublish-cRelease-o/app/