我们在 Azure Web 应用程序中部署了 ASP.NET Core Web API 解决方案。我们将 ASP.NET Core 项目部署到 Azure,一切都按预期进行。然而,当我们重新部署 Bicep 基础设施脚本来创建 Web 应用程序时,CORS 配置似乎丢失了,并且 API 开始拒绝跨站点请求。
重新启动 Web 应用程序没有帮助,但重新部署它却有帮助。我们尝试通过重新启动/启动/停止 Web 应用程序来触发此中断,但这不会破坏 cors 配置。
关于arm模板如何破坏ASP.NET Core CORS有什么想法吗?没有为 Web 应用程序配置 cors。
我们在 API 中使用以下 CORS 配置:
(...)
var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
builder.Services.AddCors(options =>
{
List<string> allowedOrigins = ["url"];
options.AddPolicy(name: MyAllowSpecificOrigins,
policy =>
{
policy
.WithOrigins([.. allowedOrigins])
.AllowAnyMethod()
.AllowAnyHeader();
});
});
(...)
var app = builder.Build();
app.UseExceptionHandler();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseCors(MyAllowSpecificOrigins);
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers()
.RequireAuthorization();
app.Run();
这是网络应用程序的二头肌模板:
resource appServicePlan 'Microsoft.Web/serverfarms@2023-01-01' = {
name: appServicePlanName
location: location
properties: {
reserved: false
}
sku: {
...
}
}
resource apiService 'Microsoft.Web/sites@2023-01-01' = {
name: apiAppName
location: location
identity: {
type: 'SystemAssigned'
}
properties: {
httpsOnly: true
serverFarmId: appServicePlan.id
siteConfig: {
alwaysOn: true
http20Enabled: true
appSettings:[
{
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
value: applicationInsights.properties.ConnectionString
}
{
name: 'ApplicationInsightsAgent_EXTENSION_VERSION'
value: '~2'
}
]
}
}
}
resource apiServiceSiteConfig 'Microsoft.Web/sites/config@2023-01-01' = {
parent: apiService
name: 'web'
properties: {
cors: null
netFrameworkVersion: 'v8.0'
use32BitWorkerProcess: false
webSocketsEnabled: true
alwaysOn: true
managedPipelineMode: 'Integrated'
http20Enabled: true
minTlsVersion: '1.2'
scmMinTlsVersion: '1.2'
ftpsState: 'FtpsOnly'
localMySqlEnabled: false
}
}
在您的二头肌文件中,仅定义了两个应用程序设置。每次运行 bicep 文件时,部署都会删除可能导致 Web 应用程序正常工作的所有其他应用程序设置。
如果你想保留未通过二头肌定义的应用程序设置,你可以看看这篇文章: