Silverlight获取WebHost配置信息--WebClient和XmlSerializer模拟
在我们的silverlight项目中,是被打包为xap zip文件下载到客户端,所以silverlight中的app配置文件我们不能直接修改,而在其宿主web host中的web.config在服务端我们也不能直接访问。在我们的项目中遇见了这个问题所以我就有了此博客。
先说明解决这个问题的方案有:
1:调用wcf,webservice,Asp.net页面等服务端数据源,异步显示在我们的UI。
2:利用silverlight项目的宿主页面 object,传入初始化参数,在silverlight app中获取。
上面的方案都是针对于我们的少量有限配置信息的获取。我这里做的是利用在服务端的xml配置文件来模拟配置文件(为什么不用web.config?以为存在权限信息的问题,所以我觉得尽量避免此文件信息暴露)。在silverlight的异步加载xml文档并解析xml文档。形成配置信息。
为了全局使用,早些加载xml文档,我们需要在app中加一句:
SLConfigManager.Current.ConfigPath = "../SlConfig.xml";//配置文件的路径,相对于我们的xap文件路径。
我们先看一下测试xml:
<Configuration>
<appSettings>
<add key="test1" value="123"></add>
<add key="test2" value="1"></add>
</appSettings>
<Class ClassID="111">
<Student Age="123">
<Name>ddddd</Name>
</Student>
<Student Age="28">
<Name>111</Name>
</Student>
</Class>
</Configuration>
这是我们可以使用:
{
MessageBox.Show(SLConfigManager.Current.GetSection<Class>("Class").ClassID + "");
MessageBox.Show(SLConfigManager.Current.GetAppSettings("test1").ToString());
MessageBox.Show(SLConfigManager.Current.GetAppSettings<Sex>("test2").ToString());
}
public enum Sex
{
man,woman
}
在这里我们模拟了AppSettings,和Section(注:这里的section,不需要预申明,在利用xml转化形成的,更利于我们的配置扩展性,使用到了XmlRoot,XmlElement等attribute),在看看我们的Class类:
namespace SilverlightApplication2
{
[XmlRoot("Student")]
public class Student
{
[XmlElement("Name")]
public string Name
{ get; set; }
[XmlAttribute("Age")]
public int Age
{
get;
set;
}
}
[XmlRoot("Class")]
public class Class
{
[XmlAttribute("ClassID")]
public int ClassID
{
get;
set;
}
[XmlArray()]
[XmlArrayItem("Students")]
public System.Collections.Generic.List<Student> Students
{
get;
set;
}
}
}
最后需要说明的是:在于我们的项目中可能存在xml文件还没有加载,的情况,所以加入了时间支持和IsLoaded属性标示。
源码:
最后附:测试程序打包下载
本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2011/07/06/SlConfig.html,如需转载请自行联系原作者
Silverlight获取WebHost配置信息--WebClient和XmlSerializer模拟相关推荐
- C++通过WMI获取硬件配置信息
C++通过WMI获取硬件配置信息 WMI即Windows管理规范.通过它可以访问.配置.管理和监视几乎所有的Windows资源. WMI提供程序在WMI和托管资源之间扮演着中间方的角色.提供程序代表使 ...
- Java.Utils:获取电脑配置信息
Don't say much, just go to the code. package org.bood.common.utils;import java.io.*;/*** 获取电脑配置信息** ...
- java调用本地shell_java通过ProcessBuilder执行本地shell命令 获取ip配置信息
[java]代码库import java.io.File; import java.io.IOException; import java.io.InputStream; import java.ut ...
- iOS获取WIFI配置信息,WIFI名称、网关(路由器地址)、本机IP地址、DNS
DEMO地址(看代码,什么就都有了):https://github.com/SimpleBraver/test_wifi.git 1.获取当前手机WIFI名称信息 #import <System ...
- windows从注册表获取ip配置信息
DNS的获取方式有多种: 这里提供一种方式是从注册表获取的: 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameter ...
- winform c# 获取电脑配置信息和cpu 内存使用率
效果如下 代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System. ...
- NHibernate获取实体配置信息(表名,列名等等)
// 注意这里有个&符号,并不是写错了,而是约定 就是这样写的ctx.GetObject("&SessionFactory") 这是官网地址http://nhfor ...
- .NetCore获取Json和Xml格式的配置信息
本篇将和大家分享的是:如何获取Json和Xml格式的配置信息,主要介绍的是Configuration扩展方法的使用,因为netcore的web应用在Startup中已经默认嵌入appsettings. ...
- Android平台Chromium net中的代理配置信息获取
在计算机网络中,代理服务器 扮演着发起请求的客户端与服务器之间的中间人的角色.客户端连接到代理服务器,请求一些服务,比如文件,网页,或其它可以从服务器获得的资源,代理服务器以简化和控制复杂度的形式获取 ...
最新文章
- ExecutorService 的理解与使用
- Golang 301永久重定向
- 纯CSS三级弹出菜单
- 如何在新版的gitbook上写自己的书
- spingboot整合netty实现单聊整合实现
- Flink-环境搭建
- JSK-16016 单词排序【排序】
- poj 1027 深搜
- C语言打印杨辉三角(C笔记)
- 《C专家编程》之 内存泄漏
- 如何用xilinx sdk输出hello world
- 跨境电商如何通过WhatsApp Business进行客户服务?
- 如何免费将XPS转换为PDF格式
- 笔记本电脑Haswell黑苹果opencore睡眠实战
- mysql中dint_MySQL基础篇(1)SQL基础
- FrameGraph Extensible Rendering Architecture in Frostbite
- 如何把图片压缩到1M?怎么把照片缩小到1M?
- 使用 PetaLinux 自定义 ZynqMP 平台
- 苏州公交线路查询api-苏州公交状态实时跟踪
- THREEJS在场景图上动态标识一些文字方法二(文字精灵sprite)
热门文章
- 商务智能 “软肋”何在?
- 在ROMMON状态下恢复IOS的方法
- 基于HttpClient的HttpUtils(后台访问URL)
- 详解linux系统的启动过程及系统初始化
- Lossless Codec---APE代码解读系列(二)
- 【Nvivo教程】使用Nvivo构建计算的本体
- 全球首条瓷绝缘子自动化生产线:黏土巧造“瓷器活”
- 其原因可能是堆被损坏,这也说明 xxx.exe 中或它所加载的任何 DLL 中有 bug
- 斐波那契数列及青蛙跳台阶问题
- leetcode231