将参数传递给Silverlight OOB应用程序

时间:2011-01-20 22:54:42

标签: c# .net silverlight

我们有一个需要访问外围设备的Silverlight应用程序 - 特别是扫描仪。有了这个要求,我们不得不使用Silverlight作为OOB应用程序。直到最近,我们一直在.aspx页面内在线托管我们的silverlight应用程序。我们一直通过url(即http://testsite.com/default.aspx?username=User&password=UserPassword&screen=Screen)将参数传递给此应用程序。 SL应用程序验证用户名和密码,如果经过身份验证,则会打开传递给它的“屏幕”。

我有什么选择让这个SL应用程序的工作方式类似于我上面描述的方式(作为OOB)?

谢谢,

- 汤姆

3 个答案:

答案 0 :(得分:1)

您可以让应用程序在启动时回调Web服务,而不是通过URL传递数据,以请求此数据。或者将其存储在独立存储中(但我不建议在那里放置密码,隔离存储不安全)并在启动时使用它。

即使有另一种方法将启动参数传递给OOB应用程序,您希望用户如何调用它?通过某种链接?您创建的自定义快捷方式?由于用户仅通过“开始”菜单或桌面启动OOB应用程序,因此我不了解在这些情况下甚至可以使用的上下文。

答案 1 :(得分:0)

当您安装Silverlight应用程序以运行OOB时,它会在隔离存储中创建一个目录,其中包含一个index.htm页面,该页面实际上“托管”OOB应用程序。 (这里描述:http://debuggingblog.com/wp/2009/07/17/silverlight-3-outofbrowseroob-explained-and-how-to-host-any-xap-package-by-modifying-the-metadata/)。执行您需要做的事情的一种方法是编辑index.htm页面,并在那里传递参数。当然,你需要弄清楚如何编辑那个页面(可能很难自动完成,除非你有一个setup.exe)。只是提示用户输入用户名/密码会更有意义吗?您只需要执行一次 - 之后,您可以将其存储在一个众所周知的位置的配置文件中(可能是加密的或至少以某种方式混淆)。

答案 2 :(得分:0)

如果您使用Silverlight 4,另一种可能性是将值存储到Windows注册表中。这就是我们用于用户名,数据库名称等的内容。