我有一个aspx页面,它只是打印到屏幕上作为POST接收的任何内容。键/值对传递给Label控件的Text属性,并显示为逗号分隔的字符串。
这是整个页面。
<%@ 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在localhost上发送一个帖子,它完美地运行。键/值对出现在页面上。
但是,当我将页面推送到我的共享主机(目前使用GoDaddy),然后使用Google Postman进行测试时,它无效。页面加载但不显示键/值对。
http://www.parseci.com/ipn.aspx
似乎页面在我的GoDaddy网站上显示时没有收到POST数据,我无法弄清楚原因。
GoDaddy技术支持没有帮助。
我错过了什么?
更新:我将ipn.aspx文件复制到私有服务器,并使用Postman和Chrome Advanced Rest Client进行测试。在POST到另一台机器上的监听器页面时,两者都像魅力一样。
所以我在一个私有的公共网络服务器上取得了成功,但GoDaddy作为主机并没有成功。
答案 0 :(得分:0)
Chrome Advanced Rest Client适用于我。您确定正确使用Postman并输入参数作为表单正文参数,而不是查询参数或标题吗?
<!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注入型攻击。
修改强>
也试过邮差,这对我也有用。
答案 1 :(得分:0)
解决方案是删除&#39; www&#39;从接收POST的URL。我将http://www.parseci.com/aspx.com更改为http://parseci.com/ipn.aspx并且POST到达并正确处理。
对于任何遇到相同问题并致力于功能性Paypal IPN监听器页面的人来说,此解决方案也适用于Paypal的IPN模拟器。删除&#39;&#39;从给予模拟器的网址首次成功发布到我的监听页面。