【转】分享silverlight修改配置文件WEB.CONFIG指定服务器地址访问WCF
时间:2011-06-13 来源:天秤水
在部署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