-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
95 lines (75 loc) · 3.8 KB
/
Copy pathProgram.cs
File metadata and controls
95 lines (75 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// #################### INÍCIO DA CONFIGURAÇÃO DO PIPELINE E SERVIÇOS ####################
// Importa a biblioteca 'System.Globalization', que é essencial para trabalhar com
// informações de cultura, como formato de data, moeda e números.
using System.Globalization;
// Importa a biblioteca 'Microsoft.AspNetCore.Localization', que fornece
// as classes e métodos para configurar a localização e internacionalização de um aplicativo web.
using Microsoft.AspNetCore.Localization;
// NOVO: CORS - Importa o namespace necessário para configurar o Cross-Origin Resource Sharing.
using Microsoft.AspNetCore.Cors;
// Define o nome da política CORS que usaremos no serviço e no middleware.
// O nome é arbitrário, mas deve ser consistente.
var MyAllowSpecificOrigins = "_myFrontendOriginPolicy";
// 'WebApplication.CreateBuilder(args)' é o ponto de entrada da aplicação ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
// #################### REGISTRO DOS SERVIÇOS ####################
// NOVO: CORS - Adiciona o serviço CORS ao contêiner de serviços.
builder.Services.AddCors(options =>
{
// Define a política CORS.
options.AddPolicy(name: MyAllowSpecificOrigins,
policy =>
{
// CONFIGURAÇÃO CHAVE PARA O LIVE SERVER!
// Permite requisições que vêm do Live Server (portas 5500 ou 5501).
// A URL deve ser HTTP, pois é assim que o Live Server roda por padrão.
policy.WithOrigins("http://127.0.0.1:5500",
"http://localhost:5500",
"http://127.0.0.1:5501",
"http://localhost:5501")
// Permite todos os verbos HTTP (GET, POST, PUT, DELETE).
.AllowAnyMethod()
// Permite que qualquer cabeçalho HTTP seja enviado na requisição.
.AllowAnyHeader();
});
});
// Registra os serviços do padrão MVC (Model-View-Controller).
builder.Services.AddControllersWithViews();
// Registra os serviços de localização.
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
// #################### CONSTRUÇÃO DO APLICATIVO E DEFINIÇÃO DOS MIDDLEWARES ####################
// 'builder.Build()' constrói o objeto 'app', que representa a aplicação.
var app = builder.Build();
// Define um array com as culturas (idiomas/países) suportadas pela aplicação.
var supportedCultures = new[] {
new CultureInfo("pt-BR")
};
// Cria um objeto de opções de localização.
var localizationOptions = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("pt-BR"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
};
// #################### CONFIGURAÇÃO DOS MIDDLEWARES NO PIPELINE ####################
// Este bloco verifica se o ambiente de execução não é de desenvolvimento.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
}
// 'UseStaticFiles()' é um middleware que habilita o serviço de arquivos estáticos.
app.UseStaticFiles();
// 'UseRequestLocalization()' é o middleware que define a cultura da requisição atual.
app.UseRequestLocalization(localizationOptions);
// NOVO: CORS - Habilita o middleware CORS com a política definida.
// ESTE MIDDLEWARE DEVE VIR ANTES do UseRouting()!
app.UseCors(MyAllowSpecificOrigins);
// 'UseRouting()' é o middleware que mapeia a URL da requisição para um endpoint.
app.UseRouting();
// 'MapControllerRoute()' define o padrão de roteamento da aplicação.
app.MapControllerRoute(
name: "default",
pattern: "{controller=Produtos}/{action=Index}/{id?}");
// 'app.Run()' inicia o servidor web.
app.Run();
// #################### FIM DA CONFIGURAÇÃO DO PIPELINE E SERVIÇOS ####################