У нас есть решение веб-API ASP.NET Core, развернутое в веб-приложении Azure. Мы развертываем проект ASP.NET Core в Azure, и все работает как положено. Однако когда мы повторно развертываем сценарии инфраструктуры Bicep для создания веб-приложения, конфигурация CORS, похоже, теряется, и API начинает отклонять межсайтовые запросы.
Перезапуск веб-приложения не помогает, но перераспределение делает это. Мы попытались вызвать этот разрыв, перезапустив/запустив/остановив веб-приложение, но это не нарушает конфигурацию cors.
Есть идеи относительно того, как шаблон Arm может нарушить ASP.NET Core CORS. ? Для веб-приложения не настроен Cors.
В нашем API мы используем следующую конфигурацию CORS:
(...)
var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
builder.Services.AddCors(options =>
{
List 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
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... deployment