💢 特别说明:如果 Issue 没有严格按照模板编写且未提供测试源码下载或 Git 测试仓库地址,则视为无效
Issue
。
哪个版本号?
最新版本
WebApi、
Furion 如何使用Knife4!
异常堆栈是什么?
⚠⚠ 必须提供完整可运行且包含错误的
Git
仓库 DEMO,DEMO 提供最简单的错误逻辑代码,否则不予处理。⚠⚠
您的代码下载地址?
期待的结果是?
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
https://dotnetchina.gitee.io/furion/docs/upgrade
仔细看 4.1.6 更新日志【本期亮点-第三点】
Knife4! 里面不能显示出接口的路由地址。
Swagger 里面是正常显示!
首先,集成 Knife4J
是完全没问题的,但是下次发 Issue 麻烦贴出你的 Startup.cs
代码,或者提供 Demo,因为绝大概率是因为您的不正确配置导致。
using AMWAPI;
using Furion;
using AMWServer.Common;
using AMWAPI.Middleware;
using AMWAPI.Filter;
using Microsoft.Extensions.FileProviders;
using FurionApi.Web.Core;
using IGeekFan.AspNetCore.Knife4jUI;
using Furion.SpecificationDocument;
var builder = WebApplication.CreateBuilder(args).Inject();
builder.Services.AddSqlsugarSetup(App.Configuration);
//ApplicationConfig.Configuration = App.Configuration;
// Add services to the container.
//Furion 注入
//跨域处理
builder.Services.AddCorsAccessor();
builder.Services.AddControllers().AddInject();
//builder.Services.AddControllers();
// 默认授权机制,需授权的即可(方法)需贴 [Authorize]
特性
builder.Services.AddJwt(enableGlobalAuthorize:true);
builder.Services.AddControllers(options =>
{
//结果包装
options.Filters.Add();
//全局异常处理
options.Filters.Add();
});
//builder.WebHost.UseUrls(new[] { $"http://:{6000}" });
//builder.Logging.AddLog4Net("log4Net.config");
//builder.WebHost.UseUrls("http://:5000");
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseHttpsRedirection();
//(鉴权)身份认证,明确是你谁,确认是不是合法用户。常用的认证方式有用户名密码认证。
//使用跨域
app.UseCorsAccessor();
app.UseAuthentication();
app.UseAuthorization();
app.UseStaticFiles().UseStaticFiles(new StaticFileOptions
{
ServeUnknownFileTypes = true
});
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"Public")),
//配置访问虚拟目录时文件夹别名
RequestPath = "/Public",
OnPrepareResponse = (Microsoft.AspNetCore.StaticFiles.StaticFileResponseContext staticFile) =>
{
//可以在此处读取请求的信息进行权限认证
// staticFile.File
// staticFile.Context.Response.StatusCode;
}
});
//app.UseSwagger();
var routePrefix = "api";
app.UseKnife4UI(options =>
{
options.RoutePrefix = routePrefix; // 配置 Knife4UI 路由地址
foreach (var groupInfo in SpecificationDocumentBuilder.GetOpenApiGroups())
{
options.SwaggerEndpoint("/" + groupInfo.RouteTemplate, groupInfo.Title);
}
});
//Furion 注入
app.UseInject("api");
app.MapControllers();
app.UseConditionalConvert();
//把数据库 日志 缓存 统一
//等待touchSocketServer运行
await TouchSocketServer.Run();
//启动Socket 监听
app.Run();
采用的动态控制器。但是继承了一个基类!
v4.1.7 版本已发布
登录 后才可以发表评论