配置
您可以通过编辑 appsettings.json 文件来修改 BaGet 的配置。
要求 API 密钥
您可以要求用户在发布包时提供一个密码,称为 API 密钥。为此,请在 ApiKey 字段中插入所需的 API 密钥。
{
"ApiKey": "NUGET-SERVER-API-KEY",
...
}
用户现在必须提供 API 密钥才能推送包:
dotnet nuget push -s http://localhost:5000/v3/index.json -k NUGET-SERVER-API-KEY package.1.0.0.nupkg
启用直通缓存
直通缓存(read-through caching)允许您从上游源索引包。您可以使用直通缓存来:
- 加快构建速度(当从 nuget.org 还原包的速度很慢时)
- 在离线场景下启用包还原
以下 Mirror 设置配置 BaGet 从 nuget.org 索引包:
{
...
"Mirror": {
"Enabled": true,
"PackageSource": "https://api.nuget.org/v3/index.json"
},
...
}
PackageSource 是 NuGet 服务索引的值。
启用包硬删除
为了防止 "left pad" 问题,BaGet 的默认配置不允许删除包。每当 BaGet 收到包删除请求时,它会对包执行"取消列出"(unlist)操作。取消列出的包无法被搜索发现,但如果您知道包的 ID 和版本,仍然可以下载。您可以通过设置 PackageDeletionBehavior 来覆盖此行为:
{
...
"PackageDeletionBehavior": "HardDelete",
...
}
启用包覆盖
通常情况下,如果包的 ID 和版本已存在,BaGet 会拒绝上传。您可以通过设置 AllowPackageOverwrites 来配置 BaGet 覆盖已存在的包:
{
...
"AllowPackageOverwrites": true,
...
}
私有源
私有源要求用户在访问包之前进行身份验证。
目前不支持私有源!更多信息请参阅 此拉取请求。
数据库配置
BaGet 支持多种数据库引擎来存储包信息:
- MySQL:
MySql - SQLite:
Sqlite - SQL Server:
SqlServer - PostgreSQL:
PostgreSql - Azure 表存储:
AzureTable
每种数据库引擎都需要一个连接字符串来配置连接。请参阅 ConnectionStrings.com 了解如何为每种数据库引擎创建正确的连接字符串。
您可以使用环境变量或编辑 appsettings.json 文件来配置所选的数据库引擎。
环境变量
有两个与数据库配置相关的环境变量:
- Database__Type:要使用的数据库引擎,应为上述列表中的字符串之一,如
PostgreSql或Sqlite。 - Database__ConnectionString:数据库引擎的连接字符串。
appsettings.json
数据库设置位于 appsettings.json 配置文件的 Database 键下:
{
...
"Database": {
"Type": "Sqlite",
"ConnectionString": "Data Source=baget.db"
},
...
}
有两个与数据库配置相关的设置:
- Type:要使用的数据库引擎,应为上述列表中的字符串之一,如
PostgreSql或Sqlite。 - ConnectionString:数据库引擎的连接字符串。
IIS 服务器选项
IIS 服务器选项可以在 IISServerOptions 键下配置。可用选项详见 docs.microsoft.com。注意:如果未指定,BaGet 的 MaxRequestBodySize 默认为 250MB(262144000 字节),而非 ASP.NET Core 默认的 30MB。
{
...
"IISServerOptions": {
"MaxRequestBodySize": 262144000
},
...
}