Невозможно опубликовать приложение Webhook To C # в Azure - PullRequest
1 голос
/ 14 июня 2019

Я работаю над почтовой программой для магазина WordPress WooCommerce. Я добавил webhook в настройки WooCommerce, чтобы поразить созданное мной приложение C # WebAPI. Я пытаюсь запустить процесс электронной почты каждый раз, когда создается заказ.

Я создал контроллер API, который принимает данные JSON, отправленные из WooCommerce, и при локальном тестировании по запросу Postman на контроллер не возникает никаких проблем.

Я пытаюсь опубликовать приложение в Azure, и когда я это делаю, я получаю сообщение об ошибке 400 как из настроек WooCommerce, так и из любых запросов Postman.

Я пробовал установить

<system.webServer>
  <httpErrors existingResponse="PassThrough"/>
</system.webServer>

в файле web.config, который затем возвратил ошибку 502 от Postman, но все равно та же ошибка на стороне веб-крючка WooCommerce.

Я также попытался повторно развернуть, что тоже не сработало.

Я могу просматривать домашнюю страницу, а также ссылку контроллера API на стандартном представлении домашней страницы / меню MVC.

Контроллер - это стандартный API-контроллер, унаследованный от класса APIController:

public class OrdersController : ApiController

и содержит один метод ProcessOrders с атрибутом [HttpGet, HttpPost] и маршрутом /api/orders/callback.

Контроллер отвечает за вставку полезных данных из веб-крючка в базу данных, а затем он использует некоторые другие классы для отправки по электронной почте определенной информации о продукте.

Существуют ли какие-либо настройки, которые необходимо установить на портале Azure или в файле web.config? Я не очень разбираюсь в Azure, поэтому не слишком знаком, если для этого нужно что-то еще сделать.

Azure Information

Я развертываю на Azure из быстрой публикации в Visual Studio

  • Группа ресурсов Pay-As-You-Go
  • .Net Framework version 4.7
  • Удаленная отладка включена
  • Web App служба приложений
  • Единственной настройкой службы приложения является WEBSITE_NODE_DEFAULT_VERSION, установленное на 6.9.1

Я пробовал обе конфигурации: Release и Debug, соединение действительное при попытке использовать опцию Validate Connection в конфигурации, все параметры публикации файлов не отмечены (удалить дополнительные файлы в месте назначения, прекомпилировать во время публикации, исключить файлы из папки app_data) и Публикация работает нормально, и приложение доступно, кроме контроллера API.

Проект построен как .Net framework version 4.6.1 с Web API.

Заранее спасибо за любую помощь!

Редактировать

Я удалил параметр, который был частью исходного метода, который используется API, и теперь я получаю ошибку No HTTP resource was found that matches the request URI. Я попытался изменить аннотацию данных Route, а также просто сделать ее HttpGet, чтобы увидеть, была ли она доступна, и она не работает. Я создал второе действие на контроллере просто для проверки возврата строки, и это сработало без проблем, поэтому я не уверен, почему она недоступна. Введение в метод выглядит следующим образом:

[HttpGet]
[Route("api/orders/callback")]
public string Callback() { return "Test"; }

Я также обновил этот метод, чтобы попытаться просто вернуть простую строку, и она не работает. Я также настроил второй метод теста, чтобы он принимал строку POST, и он возвращает The requested resource does not support http method 'POST'.

Этот метод выглядит следующим образом:

[HttpPost]
[Route("api/orders/new")]
public string SecondCallback(string payload) {
  return payload;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...