2012-05-09 6 views
0

quelqu'un sait s'il est possible de faire des appels de flash à asp.net actions mvc utilisant amf remoting?utiliser amf remoting avec asp.net mvc

si oui, comment? qui technologies devraient être utilisées et comment les combiner

sur le côté flash, il serait quelque chose comme ceci:

//Connect the NetConnection object 
    var netConnection: NetConnection = new NetConnection(); 
    netConnection.connect("http://localhost:59147/Home/Index"); 

    //Invoke a call 
    log("invoke call TestMethod"); 
    var responder : Responder = new Responder(handleRemoteCallResult, handleRemoteCallFault); 
    netConnection.call('TestMethod', responder, "Test"); 

J'ai essayé et il frappe l'action, mais je ne peux pas trouver le « TestMethod » et Anyware « test » dans la demande

Merci

+0

avez-vous essayé d'utiliser .NET client AMF bibliothèques, il ya une liste sur http://en.wikipedia.org/wiki/Action_Message_Format#Support_for_AMF –

+0

@AntonioBakula J'ai essayé FluorineFx, mais il fonctionne avec RemoteObjects seulement, je peux ' t changer le côté flash et il utilise NetConnection comme je l'ai montré ci-dessus – Omu

Répondre

2

Je n'ai pas une réponse complète, mais cela pourrait vous aider dans le début.

Vous pourriez utiliser FluorineFx, c'est un bon début car il implémente tous les trucs AMF et il a AMFWriter/Reader, AMFDeserializer et ainsi, jouer avec eux.

using System.Web.Mvc; 
using FluorineFx.IO; 

public class AMFFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (filterContext.HttpContext.Request.ContentType == "application/x-amf") 
     { 
      var stream = filterContext.HttpContext.Request.InputStream; 

      var deserializer = new AMFDeserializer(stream); 
      var message = deserializer.ReadAMFMessage(); 

      foreach (var body in message.Bodies) // not foreach, just the first one 
      { 
       filterContext.ActionParameters["method"] = body.Target; 
       filterContext.ActionParameters["args"] = body.Content; 
      } 

      base.OnActionExecuting(filterContext); 
     } 
    } 
} 

[AMFFilter] 
[HttpPost] 
public ActionResult Index(string method, object[] args) 
{ 
    return View(); 
} 

Ceci n'est que la première partie. Retour des données binaires et d'autres choses pourraient être traitées par une sorte de ActionResult personnalisé, mais celui que vous savez comment faire à partir d'ici AMF ActionResult for asp.net mvc?

Bonne chance.

+0

Merci, ça marche, sauf quand j'envoie un objet je reçois un dictionnaire du côté C#, savez-vous s'il est possible de désérialiser en un objet? – Omu

+1

ok, trouvé celui-ci, j'ai utilisé ceci: http://www.fluorinefx.com/docs/fluorine/classmappingas3.html et maintenant il mappe l'objet sous .net – Omu

+0

@ChuckNorris classe mapping et alias, oui! et vous pouvez économiser du trafic lors de l'utilisation de la sérialisation personnalisée via IExternalizable (mais pas votre cas lorsque vous ne pouvez pas changer de côté client) –