2012-05-09 9 views
0

amfリモーティングを使用して、フラッシュからasp.net mvcアクションへの呼び出しを行うことができるかどうか誰かが知っていますか?asf.net mvcでamfリモーティングを使用

はいの場合、どうですか?どの技術が使用されなければならない、それはこのようなものになるだろうフラッシュ側でそれらを

を組み合わせる方法:

//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"); 

私はこれを試してみましたが、それが行動に当たるが、私は「のtestMethod」見つけることができませんそして「テスト」リクエストでanyware

は、私は完全な答えを持っていないが、これはスタートであなたを助けることができるあなたに

+0

.NETクライアントAMFライブラリを使用しようとしましたか?http://en.wikipedia.org/wiki/Action_Message_Format#Support_for_AMF –

+0

@AntonioBakula私はFluorineFxを試しましたが、RemoteObjectsのみで動作します。 Flash側を変更し、上記の方法でNetConnectionを使用します – Omu

答えて

2

ありがとうございます。

あなたはFluorineFxを使うことができます.FluorineFxは、すべてのAMFを実装していて、AMFWriter/Reader、AMFDeserializerなどを持っています。

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(); 
} 

これは単なる最初の部分です。バイナリデータやものを返すことは、何らかのカスタムActionResultで処理することができますが、ここからやる方法を知っている人AMF ActionResult for asp.net mvc

幸運。

+0

ありがとうございます。オブジェクトを送信するときを除いて、私はC#側で辞書を取得しますが、オブジェクトに逆直列化できるかどうか知っていますか? – Omu

+1

OK、これを見つけました:私はこれを使いました:http://www.fluorinefx.com/docs/fluorine/classmappingas3.htmlそして、それは.netオブジェクトにマップします。 – Omu

+0

@ChuckNorrisクラスマッピングとエイリアス、はい! IExternalizableを使用してカスタムシリアル化を使用するとトラフィックを節約できます(ただし、クライアントサイドを変更できない場合はそうではありません) –

関連する問題