无法接收 POST 数据

Trouble receiving POST data

我有一个 aspx 页面,它可以简单地将接收到的任何内容打印到屏幕 POST。 key/value 对传递给 Label 控件的文本 属性 并显示为逗号分隔的字符串。

这是整个页面。

<%@ Page Language="C#" %>
<%@ Import Namespace ="System.IO" %>
<%@ Import Namespace ="System.Web" %>
<%@ Import Namespace ="System.Net" %>
<%@ Import Namespace ="System.Text" %>

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        string initialUrl = HttpContext.Current.Request.Url.AbsoluteUri;
        string[] keys = Request.Form.AllKeys;
        string keyString = "POST KEY-VALUE PAIRS RECEIVED: ";

        for (int i = 0; i < keys.Length; i++)
        {
            keyString += keys[i] + "=" + HttpContext.Current.Request.Form[keys[i]] + ", ";
        }

        Label1.Text = keyString;
    }

</script>

<!DOCTYPE html>

<html>
<head runat="server">
    <meta name="viewport" content="width=device-width" />
    <title></title>
</head>

<body>
    <div>
        <asp:label ID="Label1" runat="server" text="Label"></asp:label>
    </div>
</body>
</html>

我正在使用 Google Postman 进行测试。当我使用 Visual Studio 2013 在调试模式下启动解决方案,然后使用 Google Postman 在本地主机上向它发送 post,它运行良好。 key/value 对出现在页面上。

但是当我将页面推送到我的共享主机(目前使用 GoDaddy)然后使用 Google Postman 进行测试时,它不起作用。页面加载但未显示 key/value 对。

http://www.parseci.com/ipn.aspx

在我的 GoDaddy 网站上运行时,页面似乎没有接收到 POST 数据,我不知道为什么。

GoDaddy 技术支持没有帮助。

我错过了什么?

更新:我将 ipn.aspx 文件复制到私有服务器并使用 Postman 和 Chrome Advanced Rest Client 进行了测试。当 POST 访问另一台机器上的侦听器页面时,两者都非常有效。

所以我在一台私人拥有的 public 网络服务器上成功了,但在 GoDaddy 作为主机时却没有成功。

我使用 Chrome Advanced Rest Client 时效果很好。您确定您正确使用 Postman 并将参数作为表单 body 参数输入,而不是查询参数或 headers?

<!DOCTYPE html>

<html>
<head><meta name="viewport" content="width=device-width" /><title>
</title></head>

<body>
    <div>
        <span id="Label1">POST KEY-VALUE PAIRS RECEIVED: hello=nurse, </span>
    </div>
</body>
</html>

注意:这似乎只是为了调试,但如果您保留此页面,您可能需要对收到的值进行编码或清理。否则,您的网站可能容易受到 XSS/CSRF Javascript injection-type 攻击。

编辑

也试过 Postman,这对我也有用。

解决方案是从接收 POST 的 url 中删除 'www'。我更改了 http://www.parseci.com/aspx.com to http://parseci.com/ipn.aspx,POST 到达并得到正确处理。

对于遇到相同问题并致力于功能性 Paypal IPN 侦听器页面的任何人,此解决方案也适用于 Paypal 的 IPN 模拟器。通过从给予模拟器的 url 中删除 'www',它第一次成功地 POST 到了我的监听器页面。