Web-Api DontNet Core 2.2 работает на Centos 7 MySQL не работает - PullRequest
0 голосов
/ 05 марта 2019

Я построил это creation-web-apis-using-asp-net-and-mysql-in-5-минут

API-интерфейс работает нормально на моей локальной машине Windows 10 сВизуальная студия 2017 предприятие.У меня есть centos окно, работающее на VMware в другом месте, где находится моя база данных MySQL.Когда я запускаю API на своем локальном компьютере, я использую строку подключения с полным доменным именем, и API работает нормально.К сведению, API также имеет метод без доступа к базе данных, который в основном отправляет обратно строку json ["value1", "value2"] и this, и тот, который получает пользователя из MySQL, отлично работает на локальной машине.

ДалееЯ настроил его как службу в окне Centos и настроил apache для прокси на веб-сервере kestrel на localhost:5000, используя эти инструкции Host ASP.NET Core в Linux с Apache ,моя конфигурация виртуального хоста Apache такая же, как в примере, за исключением отсутствия псевдонима сервера и ведения журнала.Я не хотел, чтобы псевдоним сервера, а команды регистрации остановили запуск службы.Мне также нужно было обновить apache с репозитория Centos apache 2.4.6 до Apache 2.4.36. Я думаю.

Я сделал это с помощью стороннего репо, потому что RequestHeader set "X-Forward-Proto" expr=%{REQUEST SCHEME} нужен Apache 2.4.10 иливыше.

Следует отметить, что я использовал свою собственную базу данных, а не пример, который является базовым, просто возвращает информацию о пользователе, такую ​​как uname и т. д.

Если я запускаю http://MyFQDN/api/values, я получаюжелаемый ответ.

Если запустить http://MyFQDN/api/users/1, который при запуске на моем локальном компьютере во время отладки возвращает строку json с правильной информацией, используя строку подключения MySQL с полным доменным именем, а не localhost:3306 или 127.0.0.1:3306 в качестве сервера вСтрока подключения.Когда я пробую это на коробке с Linux, не пойду.

Вместо этого я получаю печально известную ошибку http 500, которая, на мой взгляд, означает, что программа работает неправильно, единственное отличие здесь - строка подключения MySQL или что-то еще.

в демоверсиив нем говорится

Некоторые значения (например, строки подключения SQL) должны быть экранированы, чтобы поставщики конфигурации могли считывать переменные среды.Используйте следующую команду, чтобы сгенерировать правильно экранированное значение для использования в файле конфигурации

Однако я несколько раз пытался использовать пример

systemd-escape… Для получения точного синтаксиса см. Примерзабавно, тут не очень хорошо.

Я полагаю, если бы у меня была должным образом экранированная строка соединения MySQL, которая работала бы на kestrel в коробке Centos, это могло бы работать.

Это в appsettings.production.json

"ConnectionStrings": {
    "DevDatabase": "Server=127.0.0.1;Port=3306;Database=nameOfDatabase;Uid=svcuser;Pwd=Password;"
  },

Любая помощь будет оценена Спасибо

________-------- ОБНОВЛЕНИЕ

ТакЯ пытаюсь подключить визуальный студийный отладчик к web-api с помощью ssh, который, по моему мнению, должен позволить мне пройтись по коду, пока он работает в окне Centos, и найти ошибку.

Вот ссылка на инструкции, чтобы сделать это (FYI пока не повезло) Ссылка на инструкции

Любые советы по этой или какой-либо другой помощи всегда принимаются

Спасибо

1 Ответ

0 голосов
/ 07 марта 2019

используйте инструкции по моему обновлению.Теперь я могу запустить web-api на компьютере с Linux через любой браузер и просмотреть код на моей машине …….

У меня есть пустой объект в строке подключения из файла .json.

public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<sPPContext>(options =>
            options.UseMySQL(Configuration.GetConnectionString("changedButFrom.json")));
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        services.Configure<ForwardedHeadersOptions>(options =>
        {
            options.ForwardedHeaders =
                ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
        });

    }

ошибка возникает в строке, где я положил changeButFrom.json Я уверен, что проблема заключается в экранировании строки подключения, прежде чем я не был уверен, что проблема была

Отличный инструмент

...