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

使用Twilio与ASP.NET WebForms实现短信接收的配置与数据获取问题

1. Twilio控制台回调URL填写规则

  • 回调地址直接对应你message.ashx的公网访问路径即可:
    • 如果message.ashx放在网站根目录,填写格式为 https://你的公网域名/message.ashx
    • 如果放在二级目录(比如名为Handlers的文件夹),填写格式为 https://你的公网域名/Handlers/message.ashx
  • 注意事项:
    • 必须使用公网可访问的HTTPS地址,Twilio不支持本地localhost地址,本地调试可以用内网穿透工具映射本地端口
    • 控制台回调的HTTP方法选择POST,和你现有代码的参数获取逻辑匹配

2. 短信数据传递到ASPX页面展示方案

Twilio的回调请求是Twilio服务端主动发起的,不属于用户浏览器的访问请求,因此无法直接将数据传递到当前打开的ASPX页面,可根据你的业务需求选择以下两种方案:

2.1 非实时展示(用户刷新页面可见)

最简单的方案是先将收到的短信数据持久化存储,再由ASPX页面读取存储的数据源展示:

  1. 在message.ashx的ProcessRequest方法中,拿到Twilio推送的所有短信参数后,存入数据库、应用缓存或其他持久化介质,示例C#代码如下:
public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "application/xml";
    // 读取Twilio推送的短信参数
    string senderPhone = context.Request.Form["From"];
    string smsContent = context.Request.Form["Body"];
    string smsId = context.Request.Form["SmsSid"];

    // 持久化存储逻辑示例:写入数据库
    using (var db = new YourDbContext())
    {
        db.ReceivedSms.Add(new ReceivedSmsEntity
        {
            Sender = senderPhone,
            Content = smsContent,
            TwilioSmsId = smsId,
            ReceiveTime = DateTime.Now
        });
        db.SaveChanges();
    }

    // 原有TwiML返回逻辑保持不变
    var response = new Twilio.TwiML.MessagingResponse();
    response.Message($"You said: {smsContent}");
    context.Response.Write(response.ToString());
}
  1. 在ASPX页面的后台代码中,直接读取上述持久化的短信数据,绑定到GridView、Repeater等前端展示控件即可。

2.2 实时展示(无需刷新页面自动更新)

如果需要用户打开页面后自动收到新短信提醒,可以搭配SignalR实现实时推送:

  1. 项目中集成SignalR,创建消息推送Hub
  2. 在message.ashx中收到短信数据后,调用Hub的推送方法,将短信数据推送给前端页面
  3. 前端页面通过JS监听SignalR的推送事件,收到新数据后直接渲染到页面中。

补充建议:可以在处理逻辑前增加Twilio请求校验,避免恶意请求调用你的ASHX接口,直接使用Twilio SDK自带的请求验证工具即可实现。

内容的提问来源于stack exchange,提问作者mlg74

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:06:05