Конечная точка API не работает по запросу POSTC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Конечная точка API не работает по запросу POST

Сообщение Anonymous »

Мы разработали ApiEndPoint, и он не работает на рабочем сайте. Эта конечная точка отлично работает на локальном хосте или даже с использованием таких инструментов, как NGROK, с запросами GET и POST. Мы уже настроили код, чтобы он мог принимать http и https. запросы, однако мы все еще получаем ошибку при производстве, что-то любопытное заключается в том, что, используя, например, почтальона, если мы делаем запрос GET, он работает отлично, однако при запросе POST мы получаем 404 - файл или каталог не найден, и вот где мы находимся сейчас и не можем двигаться вперед.
Тело, которое мы отправили в конечную точку, также прекрасно, это код, который принимает вызов API от почтальона

Код: Выделить всё

   [HttpPost]
public ActionResult PaymentNotification(PaymentSession notification)
{
System.Diagnostics.Debug.WriteLine("PaymentNotification endpoint hit");
// Verifica si el cuerpo de la solicitud está vacío o es inválido
if (notification == null || notification.status == null || string.IsNullOrEmpty(notification.signature))
{
var jsonResult = new JsonResult
{
Data = new { message = "Los datos de la solicitud son inválidos o incompletos." },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Response.StatusCode = 400; // Código 400 (Bad Request)
return jsonResult;
}

string secretKey = "Hide for security purposes"; // La clave que usas para firmar
string calculatedSignature = GenerateSignature(notification, secretKey);

// Verifica si la firma no coincide
if (calculatedSignature != notification.signature)
{
var jsonResult = new JsonResult
{
Data = new { message = "Firma inválida." },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Response.StatusCode = 401; // Código de estado HTTP 401 (No autorizado)
return jsonResult;
}

// Busca la sesión de pago
if (!ExisteRegistro(notification.requestId, notification.reference))
{
var jsonResult = new JsonResult
{
Data = new { message = "Sesión no encontrada." },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Response.StatusCode = 404; // Código de estado HTTP 404 (Not Found)
return jsonResult;
}

// Guarda la sesión de pago actualizada
PayUResponse(notification.requestId);

// Responde con código 200 (OK) y mensaje de éxito
var successResult = new JsonResult
{
Data = new { message = "Notificación procesada correctamente." },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
Response.StatusCode = 200; // Código de estado HTTP 200 (OK)
return successResult;
}
Мы перепробовали все, но все равно не можем заставить это работать. Мы подозреваем, что это может быть конфигурация IIS на сервере, на котором размещен домен, если вы, ребята, имеете представление о том что это может быть, пожалуйста, дайте мне знать или какие-либо идеи по поводу настроек IIS.
Код уже настроен для получения запросов http и https, а также сервера IIS.
Конечная точка отлично работает на локальном хосте или даже при использовании NGROK, и он работает для POST и GET.
С производственным доменом это не работает, URL-адрес полностью в порядке, и запрос GET позволяет мне получить некоторые данные, которые нам нужно сделать. уверен, что это работает, но при запросе POST мы получаем ошибку 404 - Файл или каталог не найден.

Подробнее здесь: https://stackoverflow.com/questions/792 ... st-request
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»