Liv*_*foi 0 c# silverlight isolatedstorage
Msdn doc for IsolatedStorageFile.IncreaseQuotaTostates:
要增加配额,必须从用户启动的事件中调用此方法,例如在按钮单击事件的事件处理程序中.当您调用IncreaseQuotaTo方法时,Silverlight中的公共语言运行库会显示一个对话框,供用户批准该请求.如果用户拒绝请求,则此方法返回false,并且配额保持相同的大小.
Silverlight如何知道该方法是从用户启动的事件(如按钮单击而不是其他线程)调用的?
更具体地说:什么是用户发起的事件?有没有办法克服这个限制?
还有一个问题:
当用户第一次访问我的应用程序时,我会自动下载文件,但我不希望用户按"下载",然后当我检测到需要更多空间时,调用IncreaseQuota并出现"Silverlight对话框",要求更多空间.
我想自动开始下载(非用户启动),如果我检测到需要更多空间,请调用IncreaseQuota,然后出现"Silverlight对话框".(没有用户按下载).
经过大量挖掘,我确实找到了用户发起的事件.似乎msdn doc在与"事件概述"相关的部分中指定了用户发起的事件,但是在IsolatedStorageFile.IncreaseQuotaTo和事件概述的文档之间没有任何关联.
因此,根据定义用户发起的事件是:
Silverlight强制执行某些操作仅允许在处理用户启动的事件的处理程序的上下文中.以下是此类操作的列表:
设置IsFullScreen.
显示某些对话框.这包括SaveFileDialog,OpenFileDialog和PrintDocument.Print显示的打印对话框.
从HyperlinkButton导航.
访问主剪贴板API.
Silverlight用户启动的事件包括鼠标事件(如MouseLeftButtonDown)和键盘事件(如KeyDown).基于此类事件(例如Click)的控件事件也被视为用户启动.
应在事件处理程序中尽快调用需要用户启动的API调用.这是因为Silverlight用户启动概念还要求在事件发生后的某个时间窗口内进行调用.在Silverlight 4中,这个时间窗口大约是一秒钟.
用户启动的事件限制也适用于Silverlight的JavaScript API用法.
当Silverlight处于全屏模式时,出于安全原因,某些输入事件会被故意限制,尽管对于使用提升信任的浏览器外应用程序可以减轻这种情况.有关更多信息,请参阅全屏支持.
虽然我没有在"操作"列表中看到"IncreaseQuotaTo",但我猜他们只是忘了它,因为行为/限制与文档中描述的相同.
我很好奇Silverlight究竟知道用户发起的事件是什么,但是在深入了解.net框架源代码后,我已经走到了尽头:
if ((browserService == null) || !browserService.InPrivateMode())
{
//..
}
return false; //means that IncreaseQuota will fail
Run Code Online (Sandbox Code Playgroud)
其中browser.IsInPrivateMode是:
[SecuritySafeCritical]
public bool InPrivateMode()
{
bool privateMode = false;
return (NativeMethods.SUCCEEDED(UnsafeNativeMethods.DOM_InPrivateMode(this._browserServiceHandle, out privateMode)) && privateMode);
}
Run Code Online (Sandbox Code Playgroud)
其中DOM_InPrivateMode在DllImport ["agcore"]中,根据microsoft是保密的:(所以看起来我很快就会发现他们是如何检测用户发起的事件的.
更多地考虑它,我想微软不希望用户在浏览器中打开许多选项卡然后噗:我自动调用IncreaseQuotaTo.
IncreaseQuotaTo是一个浏览器模式对话框.这意味着您在活动时无法导航到其他浏览器选项卡.因此,如果用户现在已经从我的页面移动到google.com的标签页,并且如果我能够延迟调用IncreaseQuotaTo,则用户可能会认为google.com要求更多存储空间:).
这确实是一种安全漏洞.
如果他们使用页面级对话框实现了这一点,那么这可能更容易被黑客攻击(或解决).
总而言之,考虑到这一点,我开始明白为什么他们这样实现它以及为什么存在这些限制.
| 归档时间: |
|
| 查看次数: |
1323 次 |
| 最近记录: |