Я работаю над почтовой программой для магазина 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;
}