【转】分享silverlight修改配置文件WEB.CONFIG指定服务器地址访问WCF

在部署SILVERLIGHT站点时,需要能够修改WCF服务的地址,在网上搜索了多篇文章,程序改造成功。过程总结如下
1.在WEB.CONFIG中添加配置节点
 <appSettings>
    <add key ="WCFServiceAddress" value ="http://192.168.100.107/ProspectTaskWcfService/SilverLight_Service.svc"/>
</appSettings >

2.在host Silverilght 的aspx页面中添加<param name="initParams" vaule=""/>,添加完成后,如下所示:
我们要是想给SILVERLIGHT传点别的什么东西,也可以用这种方式

<param name="source" value="ClientBin/Jurassic.ProspectTask.Web.Control.WorkPlan.xap"/>
<param name="onerror" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
<param name="initParams" value="wcfServiceUrl=<%=ConfigurationManager.AppSettings["WCFServiceAddress"] %> " />

如果要在initParams中传入多个参数,可以在参数与参数之间有,隔开。如:关键字a=值a,关键字b=值b

3.在SilverLight工程下App.xmal.cs中,添加属性CustomConfigurations,并修改事件Application_Startup。如下所示
private  IDictionary<string, string> _customConfigurations; 
public IDictionary<string, string> CustomConfigurations 

    get { return _customConfigurations; } 

 
public App() 

    this.Startup += this.Application_Startup; 
    this.Exit += this.Application_Exit; 
    this.UnhandledException += this.Application_UnhandledException; 
 
    InitializeComponent(); 

 
private void Application_Startup(object sender, StartupEventArgs e) 

    _customConfigurations = e.InitParams; 
    this.RootVisual = new MainPage(); 
      
}
4.在SilverLight工程中添加一个新CLASS,用于返回一个连接的实例
public class WcfService 
    { 
        public WcfService() 
        { 
        } 
  
        public SilverService.SilverLightClient GetWCF() 
        { 
            App application = (App)Application.Current; 
            string url = application.CustomConfigurations["wcfServiceUrl"]; 
  
            BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None); 
            binding.MaxReceivedMessageSize = int.MaxValue; 
            binding.MaxBufferSize = int.MaxValue; 
            // 
            SilverService.SilverLightClient client = new SilverService.SilverLightClient(binding, new EndpointAddress(new Uri(url))); 
            return client; 
        } 
    }
在我们需要调用WCF服务时,就可通过上边的方法获取实例了
WcfService wcf = new WcfService(); 
SilverService.SilverLightClient client = wcf.GetWCF(); 
client.UpdatePlanCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(OnCompleted); 
client.UpdatePlanAsync(_planEntity);

文章来自学IT网:http://www.xueit.com/html/2011-05/111-7254361172011513153445656.html

posted @ 2011-06-13 09:40  天秤水  阅读(816)  评论(0编辑  收藏  举报