我们有一个Silverlight客户端,其中有两个要求:—在本地网络上打开文件(windows使用UNC, mac使用SMB)-从浏览器/查找器中拖放文件到SL客户端。
打开文件(使用UNC)在windows上运行良好,可以使用IE, FireFox(进行一些调整)或使用COM自动化退出浏览器。
在Mac上,这是很困难的;Mac上的Out Of Browser没有"提升信任功能"(相当于windows上的COM自动化),因此在Mac上的OOB中,HyperlinkButton控件是打开文件(uri)的唯一方法,但这会在打开"SMB文件"时抛出安全异常(我猜是由于SL OOB中的跨方案/跨域限制)。所以我们不得不选择浏览器内:现在Safari不能很好地处理这个问题。不过,如果你调整浏览器,火狐可以打开本地文件。于是我们就这么做了。
问题是文件拖放(这在Safari中工作,但由于浏览器的限制,在Firefox中不工作)。我们通过创建一个SL控件来解决这个问题,该控件使用HTML Bridge将HTMLdiv注入到作为可放置区域的SL客户端之上。
由于能够打开本地文件需要调整浏览器,最好的解决方案是具有OOB打开本地文件的功能(相当于windows上的COM自动化,例如能够运行AppleScript)。
这样的事情可能吗?是否有可能在OOB中通过SMB在Mac上打开文件?
谢谢。
PS:所以我们在Mac上有一个可行的解决方案,那就是在浏览器中运行FireFox 5(调整为允许打开本地文件)——直到我们遇到一个更严重的问题,看起来像一个Mac上FireFox的SL插件存在严重的渲染问题;这个问题张贴在这里:MacBooks上Firefox 4和Firefox 5的Silverlight渲染问题
我想你正在寻找的是如何使受信任的Silverlight应用程序在浏览器中运行。对于窗口有一个解决方案。我不知道在MAC里怎么做。
读:
http://msdn.microsoft.com/en-us/library/gg192793 (v = vs.95) . aspx
http://www.simple-talk.com/dotnet/.net-framework/elevated-trust-in-silverlight-4/