Чтение исходного URL из файла appsettings.json приводит к неверному запросу - PullRequest
0 голосов
/ 15 апреля 2019

Когда я использую «allowHosts»: «http://localhost:9000" в моем файле appsettings.Development.json, а затем пытаюсь получить значение в Startup.cs, API выдает исключение« Неверный запрос - Неверное имя хоста »

Все отлично работает при использовании "allowHosts": "*", но, возможно, это просто значение по умолчанию для любого источника, и именно поэтому оно работает.

appsettings.Development.json

{
    "app": {
    },
    "connectionStrings": {
        "mainDb": "Server=.\\SQLEXPRESS;Database=MailboxVisualizer;Trusted_Connection=True;"
    },
    "logging": {
        "logLevel": {
            "default": "Debug",
            "system": "Information",
            "microsoft": "Information"
        }
    },
    "allowedHosts": "http://localhost:9000"
}

Startup.cs

readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins"; 

public void ConfigureServices(IServiceCollection services)
        {
            services
                .AddMvcCore()
                .AddFormatterMappings()
                .AddJsonFormatters()
                .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            var origin = Configuration.GetValue<string>("allowedHosts");
            services.AddCors(options =>
            {
                options.AddPolicy(MyAllowSpecificOrigins,
                    builder =>
                    {
                        builder.WithOrigins($"{origin}");
                    });
            });
        }
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseCors(MyAllowSpecificOrigins);
            app.UseMvc();
        }

Я действительно вижу, что значение корректно извлекается из файла настроек при отладке, но при запуске приложения появляется «Неверный запрос - Неверное имя хоста». Ожидаемый результатчтобы увидеть, что любой источник (*) может быть заменен определенным значением.

1 Ответ

0 голосов
/ 15 апреля 2019

Документы предполагают, что номер порта должен быть исключен (см. здесь ), попробуйте без этого и без протокола:

{
    "app": {
    },
    "connectionStrings": {
        "mainDb": "Server=.\\SQLEXPRESS;Database=MailboxVisualizer;Trusted_Connection=True;"
    },
    "logging": {
        "logLevel": {
            "default": "Debug",
            "system": "Information",
            "microsoft": "Information"
        }
    },
    "allowedHosts": "localhost" // "*", "*.example.com"
}
...