2010-07-14 3 views
1

Si un autre site Web effectue un POST sur mon site ASP.NET MVC 2, comment puis-je le capturer? Ai-je besoin de faire quoi que ce soit sur les routes?ASP.NET MVC-2 Comment pouvez-vous recevoir un POST d'un autre site?

par exemple l'autre site ne présente:

string url = "https://mvc2-site.com/TestReceive"; // that's my site's controller action 

NameValueCollection inputs = new NameValueCollection(); 
inputs.Add("SessionId", "11111"); 
System.Net.WebClient Client = new WebClient(); 
byte[] result = Client.UploadValues(url, inputs); 

Comment puis-je recevoir que le POST sur mon site? J'ai essayé:

public ActionResult TestReceive(FormCollection fc) {} // doesn't get hit 

public ActionResult TestReceive(string SessionId) {} // method gets hit but session id is null 

public ActionResult TestReceive() 
{ 
    var param = ControllerContext.RouteData.Values["parameter"].ToString(); // Values["parameter"] is null 
} 

Je ne contrôle pas l'autre site et il doit être un POST (pas un webservice ou quoi que ce soit d'autre)

Comme une autre tournure ils postent autour de 10 variables, mais certains sont facultatifs , donc ils peuvent ne pas être dans les données POST.

+0

Correction d'une faute de frappe - l'autre site utilise l'URL correcte http://mvc2-site.com/Controller/TestReceive –

+0

Avez-vous réussi à utiliser WebClient avec 2 params? Je ne peux pas obtenir la chaîne publique Index (chaîne inputSegments, chaîne cmdSubmit) workingusing TheWebClient.UploadValues ​​() – VinnyG

Répondre

1
[HttpPost] 
public ActionResult TestReceive(string sessionId) 
{ 
    ... 
} 

également car il n'y a pas de contrôleur spécifié dans l'URL, vous devez vous assurer que le contrôleur qui contient cette action est le contrôleur par défaut dans les routes.

+0

J'ai essayé celui-là, et sessionId était null - me demande si j'ai fait quelque chose de mal? Mais je viens de retester maintenant et c'était encore nul. Je me suis assuré de faire correspondre le cas du paramètre SessionId correctement aussi. Et l'url ci-dessus était un exemple, le vrai a/controller/action. –

+0

@JK, le cas n'a pas d'importance. Je viens de tester cela en utilisant le modèle de projet par défaut (routes par défaut) et cela a parfaitement fonctionné. –

+0

Je ne fais que le tester avec un fichier html simple avec

. Je vais devoir voir si l'utilisation de WebClient fait une différence (elle ne devrait pas) –