探索Silverlight:HTML互操作性与ASP.NETWeb服务的安全与运用
立即解锁
发布时间: 2025-08-26 01:18:42 阅读量: 4 订阅数: 11 

### 探索Silverlight:HTML互操作性与ASP.NET Web服务的安全与运用
#### 1. 保障Silverlight的HTML互操作性安全
Silverlight的HTML互操作性功能带来了新的安全考量,特别是当Silverlight应用程序和托管网页由不同方开发时。存在两种风险情况:一是Silverlight应用程序中的恶意代码可能篡改页面上其他位置的HTML;二是HTML页面中的JavaScript代码可能向Silverlight应用程序传递恶意信息,诱使它执行错误操作。
为了限制Silverlight的HTML互操作性,可以在HTML入口页面设置两个参数:
- **enableHtmlAccess**:当设置为`false`时,Silverlight应用程序将无法使用大部分HTML互操作性功能,例如`HtmlPage`类的`Document`、`Window`、`Plugin`和`BrowserInformation`属性,但仍可调用`HtmlPage.PopupWindow()`方法。通常情况下,该参数默认设置为`true`,需要手动将其关闭。若Silverlight应用程序与HTML入口页面托管在不同域名下,此参数默认值为`false`,可选择手动开启以允许HTML互操作性。
- **allowHtmlPopupwindow**:当设置为`false`时,Silverlight应用程序无法使用`HtmlPage.PopupWindow()`方法显示弹出窗口。默认情况下,测试页面和Silverlight应用程序一起部署时,该参数为`true`;若Silverlight应用程序托管在不同域名下,则为`false`。
以下是设置这两个参数的示例代码:
```html
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2,"
type="application/x-silverlight-2" width="100%" height="100%">
<param name="enableHtmlAccess" value="false" />
<param name="allowHtmlPopupwindow" value="false" />
...
</object>
<iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
</div>
```
此外,Silverlight还能保护应用程序免受JavaScript代码的影响。但需注意,只有当明确指定某些类和方法为可脚本化时,JavaScript代码才能与应用程序进行交互。一旦将某个方法指定为可脚本化,在HTML入口页面和Silverlight应用程序一起部署的情况下,该方法将始终可供HTML入口页面使用。
若HTML入口页面和Silverlight应用程序托管在不同域名下,Silverlight的限制会更加严格,此时HTML页面将无法访问可脚本化的类和方法。不过,可以通过在应用程序清单文件`AppManifest.xml`中设置`ExternalCallersFromCrossDomain`属性来覆盖此行为,确保可脚本化成员对任何HTML页面都可用,示例如下:
```xml
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
ExternalCallersFromsCrossDomain="ScriptableOnly" ...>
<Deployment.Parts>
...
</Deployment.Parts>
</Deployment>
```
但使用此选项时需谨慎,因为可能会有未知人员在未经授权的情况下在其他服务器上创建托管Silverlight应用程序的HTML页面。若允许跨域访问可脚本化方法,任何人都可以随时使用任意信息调用这些方法。
#### 2. ASP.NET Web服务概述
一些有趣的Silverlight应用程序背后都有服务器端代码作为支撑。这些应用程序可能会调用Web服务器从数据库中检索数据、进行身份验证、将数据存储在中央存储库中、提交耗时任务或执行其他仅靠客户端代码无法完成的任务。这些应用的共同点是都基于Web服务,即任何具备Web功能的应用程序都可以访问的服务器端逻辑库。
在Silverlight开发中,创建和调用ASP.NET Web服务是重要的技能,同时还需要处理不同类型的数据、保障安全、利用ASP.NET服务、监控客户端网络连接,甚至构建双向Web服务。
Silverlight 3对Web服务模型进行了一些细微改进,例如:
- 采用更紧凑的二进制消息进行Web服务通信。
- 提供了检索Web服务错误信息的机制。
- 更易于构建双向通信的双工服务。
- 新增网络监控功能,可判断间歇性网络连接是否可用。
#### 3. 为Silverlight构建Web服务
对于Silverlight应用程序而言,访问服务器端代码最有效的方式是通过Web服务。基本思路是在ASP.NET网站中包含一个Web服务,Silverlight应用程序调用该Web服务中的方法。Web服务可以提供客户端无法获取或计算成本过高的服务器生成内容,还能对服务器端数据库执行查询和更新操作,甚至可以利用ASP.NET服务,如身份验证、缓存和会话状态。
Silverlight应用程序既可以调用传统的ASP.NET Web服务(.asmx服务),也可以调用较新的WCF服务。下面将详细介绍如何构建、调用和优化WCF服务。
#### 4. 创建Web服务
在Visual Studio中创建WCF服务的步骤如下:
1. 在解决方案资源管理器中右键单击ASP.NET网站,选择“添加新项
0
0
复制全文
相关推荐










