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