Я построил это 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 пока не повезло) Ссылка на инструкции
Любые советы по этой или какой-либо другой помощи всегда принимаются
Спасибо