Веб-приложение Azure не читает файл appsettings.json

ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Я сделал несколько открытий, которые меняют исходный вопрос. Пытаясь выяснить, какой файл appsettings используется, я зашел в онлайн-редактор службы приложений и изменил clientId на строку, отражающую файл, в котором они находятся. Я изменил все appsettings. Тем не менее то же сообщение об ошибке, говорящее о том, что конкретный идентификатор клиента не соответствует responseUrl. Дело в том, что ни один из файлов приложений больше не содержал этого cliendId. Итак, я начал удалять файл настройки приложения за файлом. Я перезапускал приложение после каждого удаления. Все еще то же сообщение об ошибке. Даже когда нет никаких настроек приложения, все равно то же сообщение об ошибке с тем же ClientId. Так что я думаю, что Azure, возможно, застрял с какой-то старой версией кода и не создал ничего нового, загруженного. Это объяснило бы такое поведение. Я создал новое приложение, и теперь clientId в сообщении об ошибке показывает clientId в файле appsettings, как и ожидалось. Теперь мой вопрос: может быть, есть какая-то функция супер-перезапуска, поскольку сайт, казалось, завис? Я хотел бы знать, повторится ли это снова.

Исходное сообщение:

У меня есть приложение .net core 2, использующее аутентификацию AzureAD. Он работает на моем локальном компьютере с использованием AzureAD для проверки подлинности. Но при доступе к онлайн-сайту я получаю такую ​​ошибку:

AADSTS50011: The reply url specified in the request does not match the reply urls configured for the application: '267b122b-b3e7-4ac0-a235-fc3019fc1e49'.

Я проверил URL-адрес в AppRegistration / ReplyURLs и его https://siteadress.azurewebsites.net

Я также проверил, правильно ли указан applicationId в appSettings.json.

На самом деле у меня четыре версии одного и того же кода. Локальные сайты и сайты Azure в моей учетной записи Azure компании. Локальные сайты и сайты Azure в моей тестовой учетной записи Azure.

Все они работают, кроме лазурной версии, в учетной записи моей компании.

Это сообщение об ошибке, в котором говорится, что URL-адрес ответа не совпадает, показывает вверх все, что я вставил в appsettings.json. Я попытался разместить неверную информацию в applicationId, tennantId и домене. Я пробовал много раз и каждый раз перезапускал сайт. Тем не менее, я получаю это сообщение об ошибке. Итак, я пришел к выводу, что сайт не читает appsettings.json.

Я проверил настройки приложения на лазурном портале, и у него есть только DEFAULT_NODE_DEFAULT_VERSION 6.9.2.

Файл appsettings.json правильный.

Когда я меняю идентификатор приложения в appsettings.development.json на «HelloWorld» и запускаю сайт локально, я получаю сообщение об ошибке, указывающее, что для приложения «HelloWorld» не настроен соответствующий URL-адрес ответа. Так я могу видеть, как его читают. Но не на лазурном участке.

Вот что находится в разделе Azure на appSettings.json:

  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "GraphInstance": "https://graph.microsoft.com",
    "GraphVersion": "v1.0",
    "Domain": "xxxxx.onmicrosoft.com",
    "TenantId": "xxxx-862d-4076-8aaf-e504b2cdd263",
    "ClientId": "267b122b-b3e7-4ac0-a235-fc3019fc1e49!",
    "ClientSecret": "*******************************",
    "Scopes": "openid email profile offline_access",
    "CallbackPath": "/signin-oidc",
    "BaseUrl": "https://siteadress.azurewebsites.net"
  }

launchSettings.json

    {
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:1940/",
      "sslPort": 44371
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "http://localhost:1940/",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "HiQ_Adress": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:1941/"
    }
  }
}

Startup.cs

public class Startup
{
    public const string ObjectIdentifierType = "http://schemas.microsoft.com/identity/claims/objectidentifier";
    public const string TenantIdType = "http://schemas.microsoft.com/identity/claims/tenantid";

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthentication(sharedOptions =>
        {
            sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
        .AddAzureAd(options => Configuration.Bind("AzureAd", options))
        .AddCookie();

        services.Configure<AzureAdOptions>(Configuration.GetSection("AzureAd"));

        services.AddSingleton<IMyProfileAppService, MyProfileAppService>();
        services.AddSingleton<IAddressAppService, AddressAppService>();
        services.AddSingleton<IAuthenticationHelper, AuthenticationHelper>();
        services.AddSingleton<IAzureAdUserService, AzureAdUserService>();
        services.AddSingleton<IGraphApiClient, GraphApiClient>();

        services.AddMvc();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseBrowserLink();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }

        app.UseStaticFiles();

        app.UseAuthentication();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
            //     template: "{controller=Home}/{action=Index}/{id?}");
        });
    }
}

Вы уверены, что на производстве он не ищет appsettings.production.json, это зависит от параметра ASPNETCORE_ENVIRONMENT.

Peppi Alexandrova 02.05.2018 18:52

Я не уверен. Но у меня есть тот же код, работающий в моей частной учетной записи Azure. Однако я заглянул в launchsettings.json. Я вставлю в исходный пост.

Daarwin 02.05.2018 19:14

покажите, как вы настраиваете источники конфигурации в своем приложении с помощью IConfigurationBuilder

Set 02.05.2018 21:31

также кое-где вы написали appSettings.json, а кое-где - appsettings.json. Имейте в виду, что имя файла чувствительно к регистру для метода .AddJsonFile.

Set 02.05.2018 21:37

@ Установите конструктор по умолчанию при использовании шаблона Microsoft. Я покажу это через минуту. По поводу написания. Я проверю это в коде, но он должен быть таким же.

Daarwin 02.05.2018 21:47

@Set Ive обновил исходное сообщение с помощью startup.cs. Спасибо за ваше время!

Daarwin 02.05.2018 23:04

Я обновил операцию, добавив несколько новых открытий.

Daarwin 03.05.2018 17:16

@ Лаутаро, ты выяснил причину?

MIWMIB 29.07.2018 01:56

@AnupKattel Нет. До сих пор не ясно, почему он так упал. Но у меня больше нет этой проблемы после удаления и повторения всего.

Daarwin 29.07.2018 20:17
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
9
1 389
0

Другие вопросы по теме