2015-04-02 4 views
1

J'ai une page aspx qui s'imprime simplement pour afficher tout ce qu'elle reçoit en tant que POST. Les paires clé/valeur sont transmises à la propriété Text d'un contrôle Label et affichées en tant que chaîne délimitée par des virgules.Problème lors de la réception de données POST

Voici la page entière.

<%@ 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> 

J'utilise Google Postman pour le tester. Lorsque je lance la solution en mode débogage avec Visual Studio 2013, puis que je lui envoie un message sur localhost avec Google Postman, cela fonctionne parfaitement. Les paires clé/valeur apparaissent sur la page. Mais quand j'exporte la page vers mon hébergement partagé (actuellement avec GoDaddy) et que je teste avec Google Postman, cela ne fonctionne pas. La page se charge mais les paires clé/valeur n'apparaissent pas.

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

Il semble que les données POST ne sont pas reçues par la page quand il est en direct sur mon site GoDaddy et je ne peux pas comprendre pourquoi.

Le support technique GoDaddy n'a pas aidé.

Qu'est-ce qui me manque? MISE À JOUR: J'ai copié le fichier ipn.aspx sur un serveur privé et testé avec Postman ainsi que Chrome Advanced Rest Client. Les deux ont fonctionné comme un charme lors de POSTing à la page d'écoute sur cette autre machine. J'ai donc du succès sur un serveur web public privé, mais pas sur GoDaddy en tant qu'hôte.

Répondre

0

solution était de supprimer 'www' de l'URL réception du POST. J'ai changé http://www.parseci.com/aspx.com à http://parseci.com/ipn.aspx et le POST arrive et est traité correctement.

Pour toute personne ayant le même problème et travaillant sur une page d'écoute IPN fonctionnelle Paypal, cette solution a également fonctionné avec le simulateur IPN de Paypal. En supprimant "www" de l'url donné au simulateur, il POST avec succès à ma page d'écoute pour la première fois.

0

Cela fonctionne bien pour moi avec le Chrome Advanced Rest Client. Êtes-vous sûr d'utiliser correctement Postman et d'entrer les paramètres sous la forme de paramètres de corps de formulaire, et non de paramètres ou d'en-têtes de requête?

rest client screen shot

<!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> 

Note: Il semble que ce soit juste pour le débogage, mais si vous gardez cette page autour, vous pouvez l'encoder ou désinfectez les valeurs que vous recevez. Dans le cas contraire, votre site pourrait être vulnérable aux attaques de type injection XSS/CSRF Javascript.

EDIT

Essayé Postman aussi, cela fonctionne aussi pour moi.

Postman screen shot

+0

Je ne suis pas sûr comment attacher une image à un commentaire, mais dans Postman il y a trois options - 1) forme-données, 2) x-www-forme-urlencoded, et 3) raw. J'ai essayé tous les trois en vain. –

+0

Le but ultime est que cette page reçoive un IPN Paypal.J'ai commencé à écrire la page pour recevoir et traiter le POST initial qui provient d'un IPN Paypal mais j'ai continué à recevoir des erreurs, donc j'essaie de confirmer d'abord que la page reçoit même un POST du tout. Alors, quelle serait la différence entre le Chrome Rest Client et ce que Paypal envoie? –

+0

formulaire-données devrait être bien. mis à jour avec une capture d'écran Postman. – Barett