Я решил проблему с OData и .NetCore 3.1 .
Теперь проблема в SSL и .NetCore. Я не могу достичь конечной точки с одним https, конечная точка http работает нормально. В чем может быть проблема?
Решено : У меня проблемы с OData при использовании .NetCore 3.1. Я посмотрел на примеры кодов, дополнительные фрагменты, которые «исправляют» проблемы. API компилируется без ошибок. Однако мне не удалось заставить работать OData, даже конечную точку "/ $ metadata". Я не знаю, что делать дальше, мне не хватает точки?
.NetCore версия: 3.1 Версия OData: 7.4.0-beta2 EF Core версия: 3.1.3
public void ConfigureServices(IServiceCollection services)
{
ConfigureAuthentication(services);
ConfigureLogging(services);
//Add other services
var connection = aCtx.DbConnections.Find(x => x.Key == "IVS_EVENT");
services.AddDbContext<IVS_EVENTContext>(options => options.UseSqlServer(connection.Value));
services.Configure<IISOptions>(options =>
{
options.ForwardClientCertificate = false;
options.AutomaticAuthentication = true;
});
services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
services.AddOData();
services.AddODataQueryFilter();
services.AddMvc(options =>
{
options.RespectBrowserAcceptHeader = true; // false by default
options.Filters.Add(new LoggingExceptionFilterAttribute());
options.Filters.Add(new LoggingActionFilterAttribute());
}).AddNewtonsoftJson();
services.AddControllers(mvcOptions =>
mvcOptions.EnableEndpointRouting = false).AddNewtonsoftJson();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
var builder = new ODataConventionModelBuilder();
var sendStatusTypeEntity = builder.EntitySet<SendStatusType>("SendStatusTypes");
sendStatusTypeEntity.EntityType.HasKey(e => e.Id);
app.UseRouting();
app.UseODataBatching();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.Select().Filter().OrderBy().Count().MaxTop(null).Expand();
endpoints.MapODataRoute("event", "api", builder.GetEdmModel());
});
if (env.IsDevelopment())
{
//GenerateTypeScriptModels();
app.UseDeveloperExceptionPage();
}
app.UseCors("CorsPolicy");
app.UseAuthentication();
}