8.7K Star 14.3K Fork 4.2K

GVPdotNET China/Furion

 / 详情

关于远程请求的请求拦截问题

已完成
创建于  
2022-08-02 17:37

💢 特别说明:如果 Issue 没有严格按照模板编写且未提供测试源码下载或 Git 测试仓库地址,则视为无效 Issue

Furion 版本号

哪个版本号?
4.1.7

Web 项目类型

  • WebApi
  • Mvc
  • Razor Pages
  • Blazor Server
  • MinApp

描述你的问题

发生了什么?
通过IHttpDispatchProxy代理方式封装微信接口时,基类接口中的请求拦截不生效,在派生接口的请求拦截有日志输出。代码如图

基类
派生类
日志输出

异常堆栈信息

异常堆栈是什么?

无异常

测试项目代码

⚠⚠ 必须提供完整可运行且包含错误的 Git 仓库 DEMO,DEMO 提供最简单的错误逻辑代码,否则不予处理。⚠⚠

您的代码下载地址?

https://gitee.com/xiodra/wechat-sdk-furion-issue.git

数据库信息

  • Sqlite
  • SqlServer
  • Mysql
  • Oracle
  • PGSql
  • Firebird
  • Cosmos

期待结果

期待的结果是?
期待通过IHttpDispatchProxy代理方式封装微信接口时,在基类能够实现请求拦截,后期可以派生出实现自动添加AccessToken参数的IApiWithAccessTokenFilter接口,方便封装

评论 (6)

Xiodra 创建了任务 3年前

从 C# 语法层面,静态接口方法是没有 “继承” 的概念,所以上面的代码符合预期:

输入图片说明

但从实际项目开发看,你的代码是合理的,所以我看看如何实现你的需求。

1454273 xiodra 1578951882 Xiodra
回复 百小僧 拥有者
3年前

我之前这个微信接口封装是使用WebApiClientCore这个库来完成的,它里面是通过特性实现的
代码
看我们这个框架能否参考完善实现我的这个需求,谢谢大佬

代码实现

https://gitee.com/dotnetchina/Furion/commit/2fdd5c29e9f3c98280c98fc9ce54862fefdadec2

输入图片说明

测试代码

using Furion.RemoteRequest;

namespace Furion.Application;

public interface IHttp : IBase
{
    [Post("https://localhost:44316/api/test-module/upload-file", ContentType = "multipart/form-data")]
    Task<HttpResponseMessage> TestSingleFileProxyAsync([BodyBytes("file", "image.png")] Byte[] bytes);

    [Post("https://localhost:44316/api/test-module/upload-muliti-file", ContentType = "multipart/form-data")]
    Task<HttpResponseMessage> TestMultiFileProxyAsync([BodyBytes("files", "image.png")] Byte[] bytes, [BodyBytes("files", "image2.png")] Byte[] bytes2);

}

public interface IBase : IHttpDispatchProxy
{
    [Furion.RemoteRequest.Interceptor(InterceptorTypes.Request)]
    static void OnRequest(HttpRequestMessage req)
    {
    }
}

测试结果

输入图片说明

发布版本

将在 v4.1.8 版本发布(今晚)

1454273 xiodra 1578951882 Xiodra
回复 百小僧 拥有者
3年前

谢谢大佬

v4.1.8 版本已发布。

1454273 xiodra 1578951882 Xiodra
回复 百小僧 拥有者
3年前

收到,谢谢大佬

百小僧 任务状态待办的 修改为已完成 3年前

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
974299 monksoul 1578937227 1454273 xiodra 1578951882
C#
1
https://gitee.com/dotnetchina/Furion.git
git@gitee.com:dotnetchina/Furion.git
dotnetchina
Furion
Furion

搜索帮助