API 端点不适用于 POST 请求

问题描述 投票:0回答:1

我们开发了一个 API 端点,但它无法在生产站点上运行,该端点可以在本地主机上完美运行,甚至可以使用带有

GET
POST
请求的 NGROK 等工具。

我们已经配置了代码,以便它可以接受

http
https
请求,但是我们仍然在生产中遇到错误。奇怪的是,例如使用 Postman,如果我们执行
GET
请求,它工作得很好,但是使用
POST
请求,我们会收到 http“404 - 文件或目录未找到”错误,并且存在以下位置我们现在就无法前进。

我们发送到端点的正文也完全没问题,这是从 Postman 接收 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 - 未找到文件或目录。

c# iis asp.net-web-api endpoint
1个回答
0
投票

我不是c#专家,但你在这个控制器中正在扩展BaseController,其他可能的问题是你有一个请求前缀?,你确定所有导入都正确吗?,请求映射是否正确配置?也许无法开始/我将向您分享我最近项目的一个示例,也许您可以看到任何差异

代码github图像示例

© www.soinside.com 2019 - 2024. All rights reserved.