ASP.NET CORE 8.0: CORS, USESTATICFILES и Azure App ServiceC#

Место общения программистов C#
Anonymous
ASP.NET CORE 8.0: CORS, USESTATICFILES и Azure App Service

Сообщение Anonymous »

У меня странная проблема с моей конфигурацией CORS. Я размещаю добавку Excel 365, который содержит формулу внутри моего приложения ASP.NET Core 8. Чтобы позволить клиенту загружать файлы, я использует app.usestaticfiles () для обнаружения папки, содержащей результат транспиляции плагина. Я должен указать политику CORS для использования при обслуживании статических файлов, я написал следующее расширение, которое будет использоваться в моем запуске: < /p>

Код: Выделить всё

public static class IApplicationBuilderExtensions
{
/// 
/// In order for this to work, it must be called BEFORE UseCors is called in the startup.
/// 
/// 
/// 
/// 
/// 
/// 
public static IApplicationBuilder UseStaticFilesWithCors(this IApplicationBuilder app, string policyName, StaticFileOptions staticFileOptions)
{
app.UseWhen(context => context.Request.Path.StartsWithSegments(staticFileOptions.RequestPath), builder =>
{
builder.Use(async (ctx, next) =>
{
// Apply CORS policy to the request
var corsService = ctx.RequestServices.GetRequiredService();
var corsPolicyProvider = ctx.RequestServices.GetRequiredService();

if (await corsPolicyProvider.GetPolicyAsync(ctx, policyName) is { } corsPolicy)
{
var result = corsService.EvaluatePolicy(ctx, corsPolicy);
corsService.ApplyResult(result, ctx.Response);
}

await next();
});
});
app.UseStaticFiles(staticFileOptions);
return app;
}
}
< /code>
Пример использования: < /p>
    app.UseStaticFilesWithCors("API", new StaticFileOptions
{
FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(webroot),
RequestPath = new PathString("/o365addon")
});
Теперь, когда этот код работает локально (IIS или Kestrel), он работает безупречно: я получаю заголовок CORS All-All-Origin для всех запросов, которые имеют заголовок «происхождение» и начинаются с моей базовой папки («/o365addon»). Никогда не присутствует. Любое предложение приветствуется.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... pp-service

Вернуться в «C#»