You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopify app/uninstalled Webhook未在C#控制器及NGROK中触发

解决Shopify app/uninstalled Webhook未触发问题

已确认的配置与代码

Webhook配置

{
    "webhook": {
        "id": 1162744922297,
        "address": "https://2aa0-94-168-221-206.ngrok-free.app/Home/Uninstalled",
        "topic": "app/uninstalled",
        "created_at": "2023-09-12T16:19:54+02:00",
        "updated_at": "2023-09-12T16:19:54+02:00",
        "format": "json",
        "fields": [
            "id"
        ],
        "metafield_namespaces": [],
        "api_version": "2023-04",
        "private_metafield_namespaces": [
            "Appname-test"
        ]
    }
}

控制器代码

public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }

    [HttpPost]
    public async Task<IActionResult> Uninstalled()
    {
        _logger.LogInformation($"Webhook Uninstalled fired");
        return Ok("uninstalled");
    }
}

排查与解决步骤

  • 验证Ngrok连通性
    用curl发送POST请求到你的Ngrok地址,比如:

    curl -X POST https://2aa0-94-168-221-206.ngrok-free.app/Home/Uninstalled
    

    同时查看Ngrok仪表盘的请求记录,如果本地控制器没触发、Ngrok没记录,说明Ngrok隧道失效(免费版域名重启即变)或本地服务未正常运行,需更新Webhook地址为当前Ngrok域名,确保本地服务端口与Ngrok转发端口一致。

  • 调整控制器端点适配Shopify请求
    Shopify的app/uninstalled Webhook会携带JSON请求体,当前方法未接收请求体可能导致模型绑定异常,修改方法接收请求体:

    [HttpPost]
    public async Task<IActionResult> Uninstalled([FromBody] dynamic payload)
    {
        _logger.LogInformation($"Webhook Uninstalled fired, shop ID: {payload.id}");
        return Ok("uninstalled");
    }
    

    同时确认Program.cs中已启用控制器路由:

    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    
  • 检查Shopify侧Webhook状态
    登录Shopify后台进入应用的Webhook管理页面,查看该Webhook的失败记录,若有多次失败,Shopify会暂停触发。点击「发送测试通知」手动触发Webhook,验证是否能到达本地端点。

  • 排除签名验证干扰
    若代码中存在Shopify Webhook签名验证逻辑(未在提供的代码中体现),暂时注释验证代码,避免因验证失败导致请求被拒绝,确认请求能到达后再重新配置签名验证。

  • 检查网络防火墙
    确认本地网络无防火墙、代理拦截外部请求,查看Ngrok日志是否有请求被拒绝的记录。


内容的提问来源于stack exchange,提问作者Leroy Gabriëls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:48:12