#c# #asp.net-core #ravendb #azure-keyvault #azure-api-management
Вопрос:
Локально мой api работает нормально, но в Azure apim, когда я добавляю эти строки в контроллер (для доступа к моему RavenDB), я получаю внутреннюю ошибку сервера 500.
Вот конфигурация запуска:
я также использую AzureKeyVault, чтобы получить сертификат для доступа к моему RavenDB.
Я добавил IP-адрес apim в разрешенные IP-адреса облака RavenDB, но безуспешно.
Вопрос в том, как я могу это исправить ?
Не стесняйтесь спрашивать, если вам нужна дополнительная информация.
РЕДАКТИРОВАТЬ Недавно у меня была дополнительная информация об ошибке 500
Проблема решена, ожидая, пока @TinyWang напишет свой ответ вместо комментария. Вы можете найти вещи, которые работали на меня, в комментариях.
Комментарии:
1. Apim работает как ворота перед вашим api, поэтому IP-адрес apim не нужно добавлять в список разрешенных баз данных, кроме IP-адреса сервера, на котором вы развернули свой проект.
2. @TinyWang Thx для вашего ответа, мой проект представляет собой простой API (нет интерфейса), я опубликовал его в Azure (Служба приложений apim) , а RavenDB находится в облаке RavenDB.
3. Привет @Adrioca, спасибо за ваш ответ и не могли бы вы позвонить в свой api напрямую, не используя URL-адрес apim? Я имею в виду, если ваш api
domain/api/users
(вы сказали, что локально он в порядке), и после развертывания в azure URL-адрес превратится в sitename.azurewebsites.net/api/users, не могли бы вы, пожалуйста, перейти по этой ссылке, чтобы проверить, поступает ли 500 из вашей программы, но не apim? (Я боюсь, что это действительно происходит из вашей программы). И если это действительно проблема с внутренним кодом, нам нужно проверить регистратор, чтобы увидеть, где исключение. И, может быть, это действительно не удалось подключить базу данных, тогда давайте проверим, разрешено ли веб-приложение бд4. См. Этот раздел для получения IP-адреса веб-приложения azure.
5. Я видел это
The system can not find the file specified
на скриншоте и здесь, я боюсь, что папкаc:/user/xxxxx
— это папка на локальном компьютере, но PLS обратите внимание после публикации вашего приложения в Azure, окружающая среда изменилась, и вы можете использовать куду, чтобы увидеть серверной среде (https://your-site-name.scm.azurewebsites.net
в навигации -> консоль отладки-> командная строка увидеть структуру папок). А затем вы можете настроить папку в своем коде.
Ответ №1:
Чтобы подвести итоги здесь и закончить это дело:
Согласно сообщению об ошибке, мы видим, что оно связано с маршрутом ошибок на сервере, но не с чем-то неправильным в azure apim. Мы можем использовать kudu для веб-приложения azure для проверки структуры папок сервера.
И, как сказал оп в комментарии выше, он решил загрузить сертификат на сервер.
Я загрузил сертификат в службу приложений Azure, используя kudu в C:homesitewwwroot> — Наконец, я изменил X509KeyStorageFlags с DefaultKeySet на MachineKeySet