Skip to content

Fast.NET.Core

逐成员 API、参数与返回参考

版本 3.5.38;目标 net8.0net9.0net10.0;依赖 Fast.Runtime。负责 Web 应用初始化、JSON 配置扫描、CORS、压缩、请求缓冲和运行环境辅助。

bash
dotnet add package Fast.NET.Core

初始化与管道

csharp
using Fast.NET.Core;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

var builder = WebApplication.CreateBuilder(args);
builder.Initialize();
builder.Services.AddControllers();
builder.AddCorsAccessor();
builder.Services.AddGzipCompression();

var app = builder.Build();
app.UseGzipCompression();
app.EnableBuffering();
app.MapControllers();
app.MapGet("/environment", () => new { builder.Environment.EnvironmentName });
app.Run();

Initialize() 返回原 WebApplicationBuilder,输出启动横幅,保存环境与配置,注册 HTTP 上下文访问、内存缓存、编码支持及启动过滤器。它不是无副作用的纯配置方法。当前横幅读取程序集版本;不要依赖旧手册中关于信息版本、标签颜色的描述作为 API 合同。

这是 Microsoft.NET.Sdk.Web 项目的 Program.cs,使用本页支持的 .NET 8/9/10。/environment 展示配置后的宿主环境,不应向公网暴露更多配置。app.Run() 是应用入口,文档维护不会执行;请求缓冲和压缩需通过真实 HTTP 请求验证,不能仅凭注册成功认定生效。

配置扫描包含执行目录,以及 AppConfigAppSettingsJsonConfigConfigSettingsConfigurationScanDirectories 指定目录。扫描按文件名前缀与环境后缀过滤;额外 publicJsonPath 使用逗号分隔的绝对文件路径。消费项目不需要复制 SDK 源码。

CORS 公开合同

builder.AddCorsAccessor() 使用构建器配置;服务集合重载接受 IConfigurationsection = "CorsAccessorSettings",另有回调重载。启动过滤器负责启用 CORS。

配置节点重载会执行 LoadPostConfigure();回调重载当前只创建选项并调用回调,不补齐默认值。回调中若需要下表默认配置,须显式 options.PostConfigure() 后再覆盖字段,不能假定两种重载初始化完全相同。

CorsAccessorSettingsOptions后配置默认值 / 语义
PolicyNameApp.Cors.Policy
WithOrigins空数组;未指定时不限制为一个固定来源
WithHeadersWithMethods未指定时允许所有请求头/方法
WithExposedHeadersContent-Disposition
AllowCredentialstrue
FixedClientTokentrue,补充令牌响应头暴露
SignalRSupportfalse
SetPreflightMaxAge无默认值;配置预检缓存时间

实际部署应显式限定来源。Initialize() 对转发头配置启用 XForwardedFor/XForwardedProto 并清空已知代理集合;应用必须按部署网络显式配置可信代理边界,不能把远端传入的地址直接当作可信身份。

其他公开入口

API / 类型行为与边界
AddGzipCompression() / UseGzipCompression()分别注册与启用响应压缩,二者不是互相替代
EnableBuffering()添加请求缓冲中间件;重复读取请求体仍需按流位置管理
UseMapHub()根据 Hub 元信息映射端点;需要宿主具备 SignalR 服务
HttpContext.GetRequestMethod()无上下文时返回 HttpRequestMethodEnum.Unknown
FastContext共享配置、宿主环境与服务访问入口,不保证后台线程有请求上下文
RemoteRequestUtilGet/Post/Put/Delete 及异步、泛型重载;响应内容与响应头以元组返回;SendAsync 校验地址与超时,外部请求异常传播
ShellUtil.Bash/Cmd启动真实子进程;timeout 为 0 时不设置有限等待,非零退出及超时可抛异常;不可将不可信输入直接拼成命令
MachineUtilAssemblyUtilJsonUtils机器/程序集/JSON 辅助;文件与平台访问需按具体方法判断
DiskInfoDaySentenceInfo磁盘与远程每日句子数据对象;后者不代表离线数据服务

来源与验证

依据 初始化实现CORS 选项。本轮只静态核对,未运行宿主、远程请求或 shell;新增片段未编译。

后台服务解析边界

后台调用方显式创建作用域并传入 provider;FastContext.GetService / GetRequiredService 不再为非单例创建隐式作用域。HTTP 管线只处理所属请求资源,不再释放全局后台对象集合。应用停止时才清理显式登记的应用级对象。