【问题标题】:Getting ASP.NET root path to Flex?获取到 Flex 的 ASP.NET 根路径?
【发布时间】:2011-02-21 20:50:48
【问题描述】:

我正在开发一个主要基于 ASP.NET 的项目。主项目旨在为不同的客户端部署到多个位置,因此一个客户端可能位于 website.com/client1 和另一个位于 website.com/client2。在应用程序中,我们经常使用应用程序根运算符~ 来获取资源的路径。

我们还在那里部署了许多 Flex 应用程序,其中许多依赖于 ASP.NET 应用程序中的 Web 服务。我所追求的是一种引用相对于应用程序根的服务的方法。以下是两个客户端部署的一些文件的位置示例:

  • 客户端 A
    • website.com/clientA/swf/FlexApplication.swf
    • website.com/clientA/services/webService.asmx
  • 客户端 B
    • website.com/clientB/swf/FlexApplication.swf
    • website.com/clientB/services/webService.asmx

FlexApplication 和 webService 都是完全一样的,所以我想要在 Flex 代码中做这样的事情:

var myService:CustomService = new CustomService(~/services/webService.asmx);
myService.callMethod("Test");

出于通常的原因,我想避免使用相对路径。有没有一种好方法可以做到这一点,或者有一种从 ASP.NET 将根 url 传递给 flex 应用程序的好方法?提前致谢。

【问题讨论】:

    标签: asp.net apache-flex actionscript path url-mapping


    【解决方案1】:

    避免使用相对 URL 绝对是个好主意。最简单的方法是在 HTML embed 语句中通过 Flash Vars 传递信息。

    查看 Adob​​e 关于在 Flex 中使用 FlashVars 的文档:http://livedocs.adobe.com/flex/3/html/help.html?content=passingarguments_3.html

    总结:

    像这样在 HTML embed 语句中添加一行:

    <param name='flashVars' value='serviceRoot=/myserviceRoot'/>
    

    然后在 Flex 中通过 mx.core.Application.application.parameters 访问器访问它

    import mx.core.Application;
    
    var parameters:Object = Application.application.parameters;
    var serviceRoot:String = parameters['serviceRoot'];
    

    【讨论】:

      【解决方案2】:

      相对于应用程序根

      Flex 对 ASP.NET 应用程序的应用程序根一无所知。 Flex 应用程序唯一知道的是提供它的 URL。它不知道页面的 URL。请记住,页面的 URL 和 SWF 的 URL 是不一样的。

      根据您的目录结构,您似乎可以使用 SWF 的 URL 来获取所需的信息。

      在 Flex 3 应用程序中,您可以使用 Application 标签的 url 属性:

      (Application.application as Application).url 
      

      在 Flex 4 Spark 应用程序中,您还可以使用 Application Tag 的 url 属性,但您必须以不同的方式获取它:

      (FlexGlobals.topLevelApplication as Application).url 
      

      然后你可以用URLUtils解析它来得到你的目录结构。可能以某种方式将其作为全局变量存储在您的 Flex 应用程序中,并使用它来构造您对远程服务器进行的服务调用的 URL。

      【讨论】:

      • 有用的信息,但它本质上与相对路径相同。我需要灵活地更改 SWF 位置,实际 URL 比我的示例更复杂。
      • 这种方法为您提供了 SWF 的绝对路径;我不确定您为什么说它与相对路径相同。我真的不明白为什么原始问题中的相对路径不好;根据我的经验,它们远优于使用绝对路径。
      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-25
        • 2011-07-09
        • 1970-01-01
        • 2018-06-29
        • 2011-11-16
        • 1970-01-01
        • 2017-01-09
        相关资源
        最近更新 更多