Solved

Silverlight to WCF. How to configure the service

Posted on 2010-09-14
10
343 Views
Last Modified: 2012-05-10
I have a Silverlight application that has a reference to a WCF service which acts as the data layer. It's all working fine but when I think about deploying it to production, I can't just copy the folders to the production because I the App would still be pointing to the WCF service on the other server. I looked but there is no option to have a config type thing that used to be there for asmx services. How is the reference is changes to point to the other server without compiling the code?

Thanks.
0
Comment
Question by:jimmysaunders
  • 7
  • 3
10 Comments
 
LVL 29

Expert Comment

by:Gautham Janardhan
Comment Utility
The fix is simple, but annoying: when you deploy, you  have to unzip the .xap package, manually edit the .clientConfig to correct the address, then zip the .xap file back up.
0
 

Author Comment

by:jimmysaunders
Comment Utility
That is not a fix. That's hacking it. I'm looking for the proper way of doing it.
0
 
LVL 29

Expert Comment

by:Gautham Janardhan
Comment Utility
silver light 4 or 3 ?
0
 
LVL 29

Expert Comment

by:Gautham Janardhan
Comment Utility
if 3... you can add a xaml/xml  file which will hold your configuration(mainly end point and any other config you need for you silver light application) to the root web site folder (i prefer xaml mainly because i convert it into an object using xaml loader) and then when the silver light application starts up, download it and read the end points and set it to the service client.

if 4 -> http://msdn.microsoft.com/en-us/library/cc197941(v=VS.95).aspx
0
 

Author Comment

by:jimmysaunders
Comment Utility
It's Silverlight 3.

How do I do what you wrote in the last i.e. set the end point to the service client. I would appreciate a code snippet if possible.

Thanks.
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 29

Expert Comment

by:Gautham Janardhan
Comment Utility
in the app.xaml.cs file

the Application_Startup would change as shown below



private void Application_Startup(object sender, StartupEventArgs e)
        {
            WebClient client = new WebClient();
            client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
            client.DownloadStringAsync(new Uri("/config.xaml",UriKind.Relative));
        }

Open in new window

0
 
LVL 29

Expert Comment

by:Gautham Janardhan
Comment Utility
and the call back
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)

        {

            Config config = (Config)XamlReader.Load(e.Result); // u can cache it as a singleton to use in other parts of the application

            ServiceReference.MessagingHelloClient client = new SilverlightApplication1.ServiceReference.MessagingHelloClient();

            client.Endpoint.Address = new System.ServiceModel.EndpointAddress(config.Endpoint); // just a sample on how to set the end point

            this.RootVisual = new MainPage();

        }

Open in new window

0
 
LVL 29

Accepted Solution

by:
Gautham Janardhan earned 500 total points
Comment Utility
the xaml config file to be copied to the root folder (u can copy it any where in the webs server just need to give path appropriately when downloading)

also you can extent this config file to add any configuration required by your application
<conf:Config    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

                            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

                            xmlns:conf="clr-namespace:SilverlightApplication1;assembly=SilverlightApplication1"

                            xmlns:sys='clr-namespace:System;assembly=mscorlib' Endpoint='http://localhost:5000/MyService.svc'>

</conf:Config>

Open in new window

0
 
LVL 29

Expert Comment

by:Gautham Janardhan
Comment Utility
also dont forget to change the following line to suit your dll/xap

xmlns:conf="clr-namespace:SilverlightApplication1;assembly=SilverlightApplication1"
0
 

Author Comment

by:jimmysaunders
Comment Utility
Thanks a lot. It worked (not exactly how you did it) but a little variation of it.

Thanks again.
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Suggested Solutions

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now