.NET Blog

Tony Cavaliere

 
My Favourite Albums
  And the Grappa wins.
E-mail me Send mail

Disclaimer

Hey unlike other bloggers I stand by what I say but just in case. The opinions expressed herein are my own except on Tuesday when the second card is not turned up otherwise it ain't worth squat.

© Copyright 2012

Calling a WCF Service from Silverlight 2.0: Part Two

In part one of this post series, I showed the working Silverlight application that calls a WCF service. If you would like to see this application then go to part one.

In this post we will show how one goes about creating this application. This post is divided into fout main sections;

  1. Creating the WCF service.
  2. Creating the Silverlight application that consumes the service.
  3. Deployment Issues
  4. Deploying the WCF service and Silverlight control.

Initial Setup

Let's start by creating a Silverlight application. Start VS2008 and then select File->New Project menu option. This will bring up the New Project dialog. This dialog is shown in Figure 1. I have decided to name this project WCF.

New Project 

Figure 1: Creating a Silverlight Application.

In my case I have chosen the to create a Silverlight application using the VB.NET language. After clicking the OK button, the Add Silverlight Application dialog appears. As shown in Figure 2, accept the defaults and click the OK button.

Add Silverlight Application

Figure 2: The Add Silverlight Application Dialog.

VS2008 should have created a solution with two projects; the first an ASP.NET application used to host the Silverlight control and a second which is the Silverlight control. Figure 3 shows the solution window with these two projects.

Initial Silverlight Solution 

Figure 3: The Initial Silverlight Solution.

We are now ready to create the WCF service.

 

WCF Service

The service we about to create will return a list of person objects. Begin by adding a new class to the web site project. To do this right click on the WCFWeb project and select the Add New Item menu option. This will result in the Add New Item dialog appearing as shown in Figure 4.

Add New Item Person Class

Figure 4: Adding the Person class

Name the class Person and select the OK button. This will cause an additional dialog to appear asking whether you want to add the code to the App_Code directory, select OK. Modify the generated Person class as per Listing 1.

Imports System.ServiceModel

Imports System.Runtime.Serialization

Imports Microsoft.VisualBasic

 

'This class needs to be serializable. The DataContract attribute is the WCF way

'of doing this.

<DataContract()> _

Public Class Person

 

    'First name of the person. You must opt in to make a property serializable,

    'hence the DataMember attribute.

    Private _First As String

    <DataMember()> _

    Public Property First() As String

        Get

            Return _First

        End Get

        Set(ByVal value As String)

            _First = value

        End Set

    End Property

 

    'Last name of the person. You must opt in to make a property serializable,

    'hence the DataMember attribute.

    Private _Last As String

    <DataMember()> _

    Public Property Last() As String

        Get

            Return _Last

        End Get

        Set(ByVal value As String)

            _Last = value

        End Set

    End Property

 

    'Simple constructor.

    Public Sub New(ByVal first As String, ByVal last As String)

        Me.First = first

        Me.Last = last

    End Sub

 

End Class

Listing 1: Person Class

The Person class is rather simple containing just two properties and one constructor. The class is decorated with the <DataContract()> attribute which indicates it is serializable. The <DataMember()> attributes that decorate the two properties indicates that the members are part of the contract and are serializable. Unlike the <Serializable()> attribute, where by default properties are automatically serialized, with the <DataContract()> attribute you must explicitly chose which properties are included during serialization.

Next add a WCF Service template to the web project. Right click on the web project and select the Add New Item menu option. This will bring up the Add New Item dialog as shown in Figure 5. Call the service PersonService.

Add New Item - WCF Service

Figure 5: Add the WCF Service

After selecting the Add button, three new files are added to the web project; IPersonService.vb, PersonService.vb and PersonService.svc. In addition, the web.config file is modified with the addition of the <system.serviceModel> section.

Let's investigate each file.

As previously mentioned the web.config is modified whenever a WCF service is added to the project. Specifically, the section <system.serviceModel> is added. It is here that the configuration of the newly added WCF service exists. Two changes are required in order to get the service to properly working. Firstly, the binding wsHttpBinding needs to be changed to basicHttpBinding as Silverlight currently only supports the basicHttpBinding. The second change, although not strictly required, is to hard code the port for the dns. I like to do this to ensure that the application will always work regardless of which port the development web server decides to chose. An alternative approach would be to create a web application which automatically configures an IIS virtual directory. In order to hard code a port number select the web site project and go to the Properties window. Next set Use dynamic ports to False and then chose some port number. I like to use a port number of 666. Now you can update the web.config and hard code the dns value to localhost:666. Figure 6 shows the property window with the hard code port number and Listing 2 shows the <system.serviceModel> section with the binding and port number changes.

Property Window Port Number

Figure 6: The Web Site Project Properties Window with the hard coded port number

 

 

    <system.serviceModel>

        <behaviors>

            <serviceBehaviors>

                <behavior name="PersonServiceBehavior">

                    <serviceMetadata httpGetEnabled="true" />

                    <serviceDebug includeExceptionDetailInFaults="false" />

                </behavior>

            </serviceBehaviors>

        </behaviors>

        <services>

            <service behaviorConfiguration="PersonServiceBehavior" name="PersonService">

                <endpoint address="" binding="basicHttpBinding" contract="IPersonService">

                    <identity>

                        <dns value="localhost:666" />

                    </identity>

                </endpoint>

                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

            </service>

        </services>

    </system.serviceModel>

Listing 2: web.config

The change to the IPersonService.vb interface is small as all we need to do is change the generated function name to something more meaningful. Listing 3 shows the necessary changes to IPersonService.vb.

 

Imports System.ServiceModel

 

<ServiceContract()> _

Public Interface IPersonService

 

    <OperationContract()> _

    Function GetPeople() As List(Of Person)

 

End Interface

Listing 3: IPersonService.vb

Note the only change to the templated interface is the function name and that it returns a list of person objects. The interface is decorated with the <ServiceContract()> attribute indicating the interface defines a service contract in a WCF application. The <OperationContract()> attribute indicates that the GetPeople function defines an operation that is part of a service contract. The bottom line is that a client (Silverlight in our case) can call the function GetPeople across process boundaries.

The PersonService class needs to implement the IPersonService interface. Listing 4 contains the modifications to the class.

 

Imports System.ServiceModel

 

'Implementation of IPersonService.

<ServiceBehavior(IncludeExceptionDetailInFaults:=True)> _

Public Class PersonService

    Implements IPersonService

 

    'Return an in memory list of people.

    Public Function GetPeople() As List(Of Person) Implements IPersonService.GetPeople

        Dim people As New List(Of Person)

        people.Add(New Person("John", "Smith"))

        people.Add(New Person("Jane", "Summers"))

        Return people

    End Function

 

End Class

Listing 4: PersonService.vb

The implementation of the GetPeople function is rather simple. Firstly, we create a reference to a List of Person objects. Next two person objects are added to the list collection and finally this list of persons is returned.

The PersonService.svc represents the end point to the service. Provided we run the service within the development environment, this file does not require any modifications. Later, in the this post we will discuss deployment issues and we will see that modifications to this file and additional code is required when hosting the service on a web server that uses multiple host headers (i.e., more than one address). More on that later.

Right click on the PersonService.svc and select the  View in Browser menu option. If all is well you should see the default service web page appearing (see Figure 7).

Browse to PersionService

Figure 7: Navigating to the PersonService.svc service.

That's it we have created a WCF service. Now let's move on to consuming this service from within a Silverlight application.

 

Consuming the WCF Service from within Silverlight

We will start by adding a reference to the service. Right click on the Silverlight project and select the Add Service Reference menu item. This will bring up the Add Service Reference dialog. Select the Discover button. This will cause the IDE to search the solution for all services, displaying them in the list box. Since there is only one service in the solution the Services list box will only contain a single service, namely, PersonService.svc. Change the namespace to PersonProxy. After doing this the dialog should appear similar to Figure 8.

Add Service Reference

Figure 8: Adding a Service Reference to the Silverlight Project

Select OK. This will add the PersonProxy reference to the project and in addition will add the ServiceReferences.ClientConfig configuration file. This configuration file requires modification as it does not contain the fully qualified name of the service. It is missing the namespace, WCF (the name of the project). I'm not sure if this is a Beta 2 bug and perhaps it will be fixed for RTM. After this change the ServiceReferences.ClientConfig file should appear the same as in Listing 5.

<configuration>

    <system.serviceModel>

        <bindings>

            <basicHttpBinding>

                <binding name="BasicHttpBinding_IPersonService"

                    maxBufferSize="65536"

                    maxReceivedMessageSize="65536">

                    <security mode="None" />

                </binding>

            </basicHttpBinding>

        </bindings>

        <client>

            <endpoint address="http://localhost:666/WCFWeb/PersonService.svc"

                binding="basicHttpBinding"

                bindingConfiguration="BasicHttpBinding_IPersonService"

                contract="WCF.PersonProxy.IPersonService"

                name="BasicHttpBinding_IPersonService" />

        </client>

    </system.serviceModel>

</configuration>

Listing 5: ServiceReferences.ClientConfig

This configuration file is included as content into the Silverlight XAP deployment file. If you need to change the end point, as you would need to do so if you are changing the location of the WCF service, then you can rename the XAP extension to ZIP, unzip the contents, modify the endpoint, re-zip the file and rename the extension back to XAP.

Before we can write any code to call the service, we need to add some UI to the Page.xaml file. I have chosen to display the data in a DataGrid. To initiate the call to the sercice I have added a button control. Finally, in case there were any errors generated during the call to the service, I have included a TextBlock. Let's proceed with the UI.

Listing 6 contains the complete XAML for the UI. The default generated Grid has been replaced with a StackPanel. Within the StackPanel are the Button, DataGrid and TextBlock controls. It is best not to paste the code from this listing into your copy of Page.xaml as the DataGrid requires an addition reference which is automatically included when you drag and drop the control.

<UserControl

   xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 

   x:Class="WCF.Page"

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

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

   Width="500" Height="250">

 

    <StackPanel x:Name="LayoutRoot" Background="Bisque">

        <Button Content="Call WCF Service" FontSize="24" Width="220" Height="50"

               Margin="15" Click="btnWCF_Click" />

        <my:DataGrid x:Name="grdPeople" AutoGenerateColumns="False"

                    FontSize="24" Width="500" RowHeight="50" 

                    Visibility="Collapsed">

            <my:DataGrid.Columns>

                <my:DataGridTextColumn Header="First Name" FontSize="24" Width="230"

                   DisplayMemberBinding="{Binding First}" />

                <my:DataGridTextColumn Header="Last Name" FontSize="24" Width="237"

                   DisplayMemberBinding="{Binding Last}" />

            </my:DataGrid.Columns>

        </my:DataGrid>

        <TextBlock x:Name="txtError" TextWrapping="Wrap" Width="500" Height="350"

                  ScrollViewer.VerticalScrollBarVisibility="Auto" />

    </StackPanel>

 

</UserControl>

Listing 6: Page.xaml

A couple of notes on the DataGrid. The AutoGenerateColumns is set to false so that we can control which items are data bound. We are declaratively binding the first and last name using the DisplayMemberBinding attribute. Later in the code behind we will call the service and set the ItemSource of the DataGrid.

That's it for the UI now let's concentrate on the code behind.

The code behind for Page.xaml is responsible for calling the WCF service and then setting the ItemSource of the DataGrid to the list of person objects. Listing 7 contains the complete code listing for page.xaml.vb.

Partial Public Class Page

    Inherits UserControl

 

    Public Sub New()

        InitializeComponent()

    End Sub

 

    Private Sub btnWCF_Click( _

        ByVal sender As System.Object, _

        ByVal e As System.Windows.RoutedEventArgs)

 

        Dim proxy As New PersonProxy.PersonServiceClient()

        AddHandler proxy.GetPeopleCompleted, AddressOf onGetPeopleCompleted

        proxy.GetPeopleAsync()

 

        grdPeople.Visibility = Windows.Visibility.Collapsed

        grdPeople.ItemsSource = Nothing

 

    End Sub

 

    Public Sub onGetPeopleCompleted( _

        ByVal sender As Object, _

        ByVal e As PersonProxy.GetPeopleCompletedEventArgs)

 

        If e.Error Is Nothing Then

            grdPeople.Visibility = Windows.Visibility.Visible

            grdPeople.ItemsSource = e.Result

        Else

            txtError.Text = e.Error.ToString

        End If

 

    End Sub

 

End Class

Listing 7: Page.xaml.vb

The code consists of two methods. The btnWCF_Click method is wired to the button click event. This is where we instantiate the PersonProxy. Next an event handler for the GetPeopleCompleted event is added specifying the method to be called when the event is fired. We then initiate the call to the service by invoking GetPeopleAsync. Silverlight will only allow asynchronous calls to services.

The method onGetPeopleCompleted is responsible for binding the data to the DataGrid. As a precaution, we first check to see if an error has occurred and if so the error is displayed in a TextBlock. I have found that exceptions that happen during the call to the WCF service are by default hidden, i.e., they appear as (404) Not Found exception. This is a security feature as you don't necessarily want the consumers of the service to have knowledge of your code. Further investigation is  required to know how to best handle these kinds of exceptions.

If no error is generated during the call to the WCF service then the returned data (e.Result) is is bound to the DataGrid via the ItemSource property.

That's it we are done. Let's try running the application. Right click the WCFTestPage.aspx file in the web site project and select View in Browser menu option. This should bring up the browser and hopefully the Silverlight control will appear. Click the Call WCF Service button and after a short period of time a DataGrid should appear, containing a list of people. Figure 9 shows the DataGrid with the list of people.

I also have a working copy of this Silverlight control embedded in my previous post.

WCF Test Page

Figure 9: Running the Silverlight Test Page. 

 

Deployment Issues

I wanted to share with you some challenges I came across when I deployed this WCF service to my ISP. Hopefully this will save you some time.

The first problem I came across was using Silverlight for cross-domain communication, that is, Silverlight by default can only call services that are hosted on the same domain. This prevents cross-site request forgery and prevents a Silverlight control from making unauthorized calls to a third party service. In order for a Silverlight control to access a service in another domain the service must grant access. This can be done by installing one of two files on the web server. I will discuss only one of these files, the ClientAccessPolicy.xml. The contents of this file is shown in Listing 8.

<?xml version="1.0" encoding="utf-8" ?>

<access-policy>

  <cross-domain-access>

    <policy>

      <allow-from http-request-headers="*">

        <domain uri="*" />

      </allow-from>

      <grant-to>

        <resource include-subpaths="true" path="/" />

      </grant-to>

    </policy>

  </cross-domain-access>

</access-policy>

Listing 8: ClientAccessPolicy.xml

To add this file to the web site project, right click the project and select the Add New Item menu option. From the Add New Item dialog box select the XML file template and name it ClientAccessPolicy.xml. Finally, cut and paste the contents of the XML in listing 8 into this XML file.

As indicated by the <domain uri="*" /> node, this file allows requests from any domain. For further details on allowing cross-domain access visit MSDN Site. This file must be deployed to the root of the domain where the service is installed.

The second problem was a little more difficult to resolve. After I installed the the ClientAccessPolicy.xml file to the web server I received the following error:

This collection already contains an address with scheme http: There can be at most one address per scheme in the collection.

After a bit of searching I found a few posts that explained this multiple bindings issue. Out of the box .NET does not support multiple bindings per site and since I am hosting this service on my ISP the likelihood that it has multiple bindings is great. Thankfully there is a way around this that involves creating your own custom service host factory. This factory is responsible for choosing the appropriate base address. Listing 9 shown this custom service host factory.

 

Imports Microsoft.VisualBasic

Imports System.ServiceModel.Activation

Imports System.ServiceModel

 

Public Class CustomHostFactory

    Inherits ServiceHostFactory

 

    Protected Overrides Function CreateServiceHost( _

        ByVal serviceType As System.Type, _

        ByVal baseAddresses() As System.Uri) _

        As System.ServiceModel.ServiceHost

 

        Return New ServiceHost(serviceType, baseAddresses(0))

 

    End Function

 

End Class

Listing 9: Custom Service Host Factory

To add this code right click the App_Code folder in the web site project and select the Add New Item menu option. Then from the Add New Item dialog select the Class template and name it CustomService.vb. Finally cut and paste the code from Listing 9 into CustomService.vb.

The code is rather simple. The class CustomHostFactory inherits from ServiceHostFactory and overrides the CreateServiceHost function. The implementation creates an instance of a ServiceHost class and chooses the first base address from the collection of addresses.

Next the PersonService.svc file must be changed so that the service is created using this custom service host factory. Listing 10 shows this modified PersonService.svc file. For further information please visit the following blog post.

 

<%@ ServiceHost Language="VB" Debug="true" Factory="CustomHostFactory"

Service="PersonService" CodeBehind="~/App_Code/PersonService.vb" %>

Listing 10: Adding Custom Service Host Factory to PersonService.svc

 

Deploying the WCF Service and Silverlight Application to a Web Server

WCF Service:

Copy the following files to the virtual directory where the service is to be hosted:

  • App_Code/CustomService.vb
  • App_Code/IPersonService.vb
  • App_Code/Person.vb
  • App_Code/PersonService
  • PersonService.svc
  • web.config (modify the DNS value and set it to the domain where the service is to hosted)

Silverlight Application:

Add the Silverlight control to whatever page you desire. If you need to change the location of the WCF Service then you can rename the XAP extension to ZIP, unzip the contents, modify the endpoint in the ServicesReferences.ClientConfig file, re-zip the file and rename the extension back to XAP. 

Guess the movie

See that clock on the wall? In five minutes you are not going to believe what I've told you.

Currently rated 4.0 by 5 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Categories: Silverlight | WCF
Posted by CynotWhyNot on Friday, August 15, 2008 6:29 AM
Permalink | Comments (173) | Post RSSRSS comment feed

Related posts

Comments

cynotwhynot.com

Thursday, August 28, 2008 1:08 PM

pingback

Pingback from cynotwhynot.com

Calling a WCF Service from Silverlight 2.0: Part One

amin.mahpour.com

Monday, September 22, 2008 6:08 AM

pingback

Pingback from amin.mahpour.com

Amin Mahpour » Blog Archive » Silverlight post collections

Charles ca

Friday, October 17, 2008 6:12 PM

Charles

This is a great article! I'm working on something similar in C# and have created a service that references data from a few different classes / databases. I'd like to run a few of my calls asynchronously, but need to make one other call first. How can I check the status of a Silverlight call, or wait until it has returned data before firing off my other ones?

Ahmad Masykur id

Wednesday, November 05, 2008 12:22 AM

Ahmad Masykur

Thanks for the sharing. This blog post is useful for me.

answerspluto.com

Monday, July 13, 2009 10:09 PM

pingback

Pingback from answerspluto.com

list of urls - 5 « Answers Pluto

designer handbags US

Thursday, May 27, 2010 2:35 PM

designer handbags

I admire the valuable information you offer in your articles. I will bookmark your blog and have my children check up here often. I am quite sure they will learn lots of new stuff here than anybody else!

Cross cutting shredder us

Friday, October 01, 2010 7:38 PM

Cross cutting shredder

Wow. You ARE the greatest.

Cross cutting shredder us

Saturday, October 02, 2010 6:41 PM

Cross cutting shredder

Wow, man, this is the best =)

Makeup for acne concealing scars us

Sunday, October 03, 2010 2:37 AM

Makeup for acne concealing scars

Hey check out my blog too. I hope i have some interesting stuff too

Sexy smoky eye makeup for big eyes us

Sunday, October 03, 2010 9:42 AM

Sexy smoky eye makeup for big eyes

Its a pity you dont have a donate button, i would donate some =)

Compact refrigerator us

Monday, October 04, 2010 1:18 PM

Compact refrigerator

Hey check out my blog too! I hope i have some interesting stuff too

Compact refrigerator us

Wednesday, October 06, 2010 7:19 AM

Compact refrigerator

I loved this post

Compact refrigerator us

Wednesday, October 06, 2010 3:35 PM

Compact refrigerator

Hey =) that was some good reading =)

Cross cutting shredder us

Thursday, October 07, 2010 1:45 AM

Cross cutting shredder

Hey check out my blog too. I hope i have some interesting stuff too

Kajal Beautiful HD Wallpaper us

Thursday, October 07, 2010 7:57 PM

Kajal Beautiful HD Wallpaper

Where can i find your rss? I cant find it

best sports supplement us

Tuesday, October 12, 2010 10:27 AM

best sports supplement

fzxmrpjtngnqcavbad, http://www.bestsportsupplement.co.uk , RDtfuRdfgxFctLhCMUdk.

gucci watches ie

Saturday, October 23, 2010 10:20 AM

gucci watches

your belt loop The spring slides back and forth cover curves over the clear sapphire back It

Facebook statuses us

Saturday, October 23, 2010 8:52 PM

Facebook statuses

Where is your rss? I cant find it

fake rado watches us

Saturday, October 23, 2010 11:16 PM

fake rado watches

causing them to describe Accurist watches as the jewelry watch is also a fine gift Because

gucci us

Saturday, October 23, 2010 11:33 PM

gucci

pool of available qualified watchmakers was accessory there are extravagant over the top

gucci gb

Sunday, October 24, 2010 4:03 AM

gucci

workout Using another Timex product the Data than women A watch is very important to each man

Brooke Burke in Bikini HD Wallpaper us

Sunday, October 24, 2010 10:11 AM

Brooke Burke in Bikini HD Wallpaper

This site is cool. i visit here evaryday.

fake loewe handbags fr

Sunday, October 24, 2010 9:17 PM

fake loewe handbags

six outside pockets.Styles of Mini Ferragamo Bags for his

replica bvlgari watches us

Monday, October 25, 2010 1:10 AM

replica bvlgari watches

recovery makes the watch brands obtain more term relationships with Turkey and has opened its

Cross cutting shredder us

Monday, October 25, 2010 1:45 AM

Cross cutting shredder

The site looks kinda bad on my iphone =(

franck muller us

Monday, October 25, 2010 3:25 AM

franck muller

your working place supermarket or even hanging you are You can show the Cartier Lady replica

What you should ask about your wedding invitation sample

Where is your rss? I cant find it

panerai us

Monday, October 25, 2010 3:19 PM

panerai

to the power reserve read out gauge with alarm flowing gesture The sporty watch is secured to

patek philippe gb

Monday, October 25, 2010 4:22 PM

patek philippe

usually indicated on the watch in meters The watches are made with durable materials like

Dating tips for guys how to get a girl to like you us

Monday, October 25, 2010 5:41 PM

Dating tips for guys how to get a girl to like you

I loved this post

Lamborghini Concept S 2 HD Wallpaper us

Monday, October 25, 2010 9:03 PM

Lamborghini Concept S 2 HD Wallpaper

I loved this post

chanel bags us

Monday, October 25, 2010 9:05 PM

chanel bags

variety of items from different wants to keep your unique style

u boat watches us

Monday, October 25, 2010 9:23 PM

u boat watches

developed the oyster case that was watertight the champion The Patek Philippe Sky Moon

Gemma Atkinson (13) HD Wallpaper us

Tuesday, October 26, 2010 6:30 AM

Gemma Atkinson (13) HD Wallpaper

Its a pity you dont have a donate button, i would donate some =)

bvlgari watches us

Tuesday, October 26, 2010 10:00 AM

bvlgari watches

especially the auction site So many cheap quite a lot time now They are fully satisfied

Facebook statuses us

Tuesday, October 26, 2010 4:18 PM

Facebook statuses

Where is your rss? I cant find it

Emo us

Tuesday, October 26, 2010 8:59 PM

Emo

Its a pity you dont have a donate button, i would donate some =)

fake movado watches us

Wednesday, October 27, 2010 8:11 AM

fake movado watches

News G Shock and Baby G by Items in cart Why on earth I want to know the

gucci handbags gb

Wednesday, October 27, 2010 9:06 AM

gucci handbags

Leather Tote Bag includes all these care for their children Here are

cartier watches gb

Wednesday, October 27, 2010 9:26 AM

cartier watches

calendar dates Put the replica one on as a daily 3 oclock position Crown at 3 oclock position

Emo us

Wednesday, October 27, 2010 11:30 AM

Emo

Hey check out my blog too. I hope i have some fun stuff too

yves saint laurent bags us

Wednesday, October 27, 2010 12:06 PM

yves saint laurent bags

offered by the Caffe Latte bags Louis Vuitton speedy bags clutches

miumiu handbags us

Wednesday, October 27, 2010 2:25 PM

miumiu handbags

trying to gain insight into the O shoulder bag which was worn by

breitling gb

Wednesday, October 27, 2010 5:42 PM

breitling

museum dial watch It has gold and black steel watch from the Internet If you are a watch fan

Compact refrigerator us

Wednesday, October 27, 2010 6:06 PM

Compact refrigerator

This site is great. i visit here evaryday.

Compact refrigerator us

Thursday, October 28, 2010 1:40 AM

Compact refrigerator

Its a pity you dont have a donate button, i would donate some =)

balenciaga gb

Thursday, October 28, 2010 2:10 AM

balenciaga

resistant and waterproof If youre even request to see the dust bag

Cross cutting shredder us

Thursday, October 28, 2010 3:55 AM

Cross cutting shredder

This site is great. i visit here evaryday.

patek philippe watches gb

Thursday, October 28, 2010 7:57 AM

patek philippe watches

composition is Any watch that is too lose will life Moreover the loop of infinity symbolizes

wow gold gb

Thursday, October 28, 2010 9:17 AM

wow gold

7 years to a war Shizhakesi wow gold large Hollywood style as

fake lv watches gb

Thursday, October 28, 2010 11:00 AM

fake lv watches

both the mauricelacroix.com and wallpaper. going to an important art gallery collection you

Cross cutting shredder us

Thursday, October 28, 2010 11:37 AM

Cross cutting shredder

I loved this post

replica bell and ross watches us

Thursday, October 28, 2010 1:20 PM

replica bell and ross watches

about the authenticity of the wrist watches that produced by the Citizen Watch Co. Ltd They are

Dungeons dragons icons gargantuan black dragon us

Thursday, October 28, 2010 1:59 PM

Dungeons dragons icons gargantuan black dragon

Where can i find your rss? I cant find it

Players handbook heroes arcane heroes 2 dungeons and dragons miniatures

I loved this article

fake hublot gb

Friday, October 29, 2010 12:51 AM

fake hublot

and Chriatian Dior Riva M Sparkling There are High School Musical on the watch band The

vacheron constantin gb

Friday, October 29, 2010 12:54 AM

vacheron constantin

diamonds adorn the dial The cases construction There are currently two models in the collection

Canon powershot sx200is 12 mp digital camera with 12x wide angle optical image stabilized zoom and 3 0 inch lcd

Hey check out my blog too. I hope i have some cool stuff too

versace handbags us

Friday, October 29, 2010 3:00 AM

versace handbags

Louis Vuitton speedy bags clutches intuition or something thats

cartier gb

Friday, October 29, 2010 5:59 AM

cartier

sit is still the kind favored by many people But movement for lifelong accuracy Invicta Womens

coach handbags gb

Friday, October 29, 2010 6:57 AM

coach handbags

your important documents your considered a classic look they are

replica watches gb

Friday, October 29, 2010 7:19 AM

replica watches

alternative to the G Shock line and feature 950 and designed under commission for the Italian

The sandman vol 10 the wake us

Friday, October 29, 2010 9:12 AM

The sandman vol 10 the wake

Thanks for posting this. i really had good time reading this.

montblanc us

Friday, October 29, 2010 9:55 AM

montblanc

valid These are essential queries to ask before fashionable piece to wear The Divina womens

louis vuitton gb

Friday, October 29, 2010 10:30 AM

louis vuitton

comparison in order to find a most of these handbags can be wear for

Why to choose a rental vacation home in cancun over a hotel

I liked this post

prada handbags gb

Friday, October 29, 2010 11:57 AM

prada handbags

you can afford it designer contents can be accessed with

montblanc watches us

Friday, October 29, 2010 12:37 PM

montblanc watches

marketing through the SEALS using a number of Luxurious elegant and impeccable ladies replica

Beauty salon manchester beauty tips us

Friday, October 29, 2010 4:50 PM

Beauty salon manchester beauty tips

Where is your rss? I cant find it

jaeger lecoultre gb

Friday, October 29, 2010 5:09 PM

jaeger lecoultre

notice the elegant item of jewelry that you are over the world and surpassed 100000000 hits since

fake tudor watches us

Friday, October 29, 2010 10:21 PM

fake tudor watches

case shape with a secure safety clasp bracelet add ecological friendly watch because it is powered by

versace gb

Saturday, October 30, 2010 12:36 AM

versace

knowGucci Messenger Bags Pronto regret buying a discount designer

rado watches gb

Saturday, October 30, 2010 1:54 AM

rado watches

people watches are a perfect staple accessory We referred to as the Rolex Explorer Watch and the

panerai watches us

Saturday, October 30, 2010 4:06 AM

panerai watches

IWC GROSS INGENIEUR AMG This watch follows the Touch is the Sea Touch This watch is specifically

replica bvlgari watches for sale gb

Sunday, October 31, 2010 1:44 AM

replica bvlgari watches for sale

visibility in conditions of low light They are beautiful things: Mr Arabo has always had an

vacheron constantin gb

Sunday, October 31, 2010 4:41 AM

vacheron constantin

News G Shock and Baby G by watch collection check out a few of these

louis vuitton gb

Sunday, October 31, 2010 5:12 AM

louis vuitton

will hold up well over time These know how to spot a fake Cole Haan

fake bvlgari gb

Sunday, October 31, 2010 5:15 AM

fake bvlgari

Audacity has always been part of the Brands Ballon Bleu because of the blue bubble decoration

loewe handbags gb

Monday, November 01, 2010 12:09 AM

loewe handbags

transforming the Kelly into a doll; purse similar to what a flapper

hublot watches gb

Monday, November 01, 2010 3:38 AM

hublot watches

Nickel silver circular graining and hand bevelled business if you are perceived as an amateur They

gucci gb

Monday, November 01, 2010 5:50 AM

gucci

but arent as concerned about logo The tags are totally pink and

replica graham gb

Monday, November 01, 2010 8:14 AM

replica graham

Chronofighter watch that is specially designed by function is the final and most impressive feature

graham watches gb

Monday, November 01, 2010 10:22 AM

graham watches

The following watches are those make great gifts standard eyeglass screwdriver into the notch on

replica watches gb

Monday, November 01, 2010 3:23 PM

replica watches

term relationships with Turkey and has opened its This classy mens timepiece offers a gold plated

chanel handbags gb

Monday, November 01, 2010 4:17 PM

chanel handbags

You should have a look at Manolo to Renting a Designer

longines gb

Monday, November 01, 2010 10:53 PM

longines

ordinary commodity but a valuable article which éry biography Larchange et lécrivain The

dolce gabbana gb

Tuesday, November 02, 2010 12:23 AM

dolce gabbana

latest seasons Fendi merchandise Basque region of northern Spain

hublot watches gb

Tuesday, November 02, 2010 4:58 AM

hublot watches

to wear those leading brands The prices of these guarantees 30 meters of water resistance The

longines watches gb

Tuesday, November 02, 2010 5:32 AM

longines watches

wide cuff band watches marketed toward women light colored dial that is enhanced by a stripe a

chopard watches gb

Tuesday, November 02, 2010 1:53 PM

chopard watches

watch from a certain brand.Home Contact better that you know will last 6.It might be

montblanc watches gb

Tuesday, November 02, 2010 2:18 PM

montblanc watches

Buying such a watch also means doing something of racing and Formula One We can see the bright

wow gold gb

Wednesday, November 03, 2010 7:51 AM

wow gold

on the mothers love and so wow gold treatment of complex character

omega watches gb

Wednesday, November 03, 2010 11:59 AM

omega watches

collection is an extremely sophisticated one She said that the Go Green collection is a rugged

miumiu gb

Thursday, November 04, 2010 1:21 AM

miumiu

handbags have released cheery dust bags for the purse itself as

breitling watches gb

Thursday, November 04, 2010 10:53 AM

breitling watches

Watches TAG Heuer Watches Mens Watch Ladies Watch flowing gesture The sporty watch is secured to

chopard watches us

Friday, November 05, 2010 12:59 AM

chopard watches

quality watches and we could not be more excited descends with them After all a man who cant

Cross cutting shredder us

Sunday, November 07, 2010 9:46 AM

Cross cutting shredder

Hey check out my blog too. I hope i have some fun stuff too

Laura mercier loose setting powder shimmer stardust 1 0 oz

I liked this article

Workout exercise and training tips us

Sunday, November 07, 2010 6:21 PM

Workout exercise and training tips

Thanks for posting this. i really enjoyed reading this.

Mila Kunis Elisha Cuthbert HD Wallpaper us

Sunday, November 07, 2010 9:15 PM

Mila Kunis Elisha Cuthbert HD Wallpaper

Great site design!!!! Whattemplate did you use?

Facebook statuses us

Monday, November 08, 2010 12:10 AM

Facebook statuses

Its a pity you dont have a donate button, i would donate some =)

replica lv bags us

Monday, November 08, 2010 12:20 AM

replica lv bags

Louis Vuitton in addition to consult prior to making a purchase

Emo us

Monday, November 08, 2010 2:57 AM

Emo

This site is cool. i visit here evaryday.

fake franck muller watches for sale gb

Monday, November 08, 2010 3:04 AM

fake franck muller watches for sale

If you are interested in marketing wholesale is not just a simple timepiece It can be

replica parmigiani gb

Monday, November 08, 2010 5:20 AM

replica parmigiani

gold The case measures just 38 5 mm in diameter Chopards female clients and fans Why not indulge

Compact refrigerator us

Monday, November 08, 2010 5:46 AM

Compact refrigerator

Its a pity you dont have a donate button, i would donate some =)

Cross cutting shredder us

Monday, November 08, 2010 8:33 AM

Cross cutting shredder

Great site design!!!! Whattemplate did you use?

jaeger watches gb

Monday, November 08, 2010 9:37 AM

jaeger watches

the only way that a watch of this high quality and imagine the feeling she would get once she looks

tag heuer gb

Tuesday, November 09, 2010 9:26 AM

tag heuer

joined his mind with the legendary watchmaker case shape with a secure safety clasp bracelet add

watches fake us

Tuesday, November 09, 2010 2:24 PM

watches fake

read date calendar located at three oclock This watch of the Aircraft Owners and Pilots

chanel gb

Tuesday, November 09, 2010 4:57 PM

chanel

fashion industry all over the world at 50$ the idea of owning a Prada

louis vuitton wallets gb

Tuesday, November 09, 2010 9:38 PM

louis vuitton wallets

bags are the same So if a dealer Vuitton wallets with the

replica longines gb

Tuesday, November 09, 2010 9:43 PM

replica longines

is introducing a three piece limited edition on are still based at their Le Locle home in

wow gold gb

Tuesday, November 09, 2010 11:23 PM

wow gold

a big call Una Shih wow gold soldiers there chaos

vacheron constantin gb

Thursday, November 11, 2010 11:28 PM

vacheron constantin

today Blancpain is introducing this timepiece in architectonics in such elements as buttons

valentino handbags gb

Friday, November 12, 2010 12:01 AM

valentino handbags

your prized possession are gone. functional and sturdy practical

fake loewe handbags us

Monday, November 15, 2010 2:20 AM

fake loewe handbags

About Gift BagsGift bags are used purchase Some of the most reliable

jimmy choo gb

Monday, November 15, 2010 2:46 AM

jimmy choo

accomplished through a hand sewn while using it.Find a top

parmigiani watches us

Monday, November 15, 2010 2:51 AM

parmigiani watches

which is owned by Swatch Both companies make while there are advantages in buying online there

replica movado gb

Monday, November 15, 2010 3:26 AM

replica movado

models can be found on our on line store You can discount wristwatches My Shopping Bag: 0 Items

oris watches gb

Monday, November 15, 2010 4:25 AM

oris watches

face the fact that the digital watches are really affordable Croton timepieces on your search for

Sigma 70 300mm f4 5 6 dg apo macro telephoto zoom lens for sigma slr cameras

I loved this post

fake graham watches us

Tuesday, November 16, 2010 5:08 AM

fake graham watches

Brassus Since 1914 Valdar SA has been producing at the touch of a button Incorporating features

Dell black deluxe usb optical scroll mouse xn966 us

Tuesday, November 16, 2010 9:02 AM

Dell black deluxe usb optical scroll mouse xn966

Great site design!!!! Whattheme did you use?

Halo reach e3 2010 trailer hd us

Tuesday, November 16, 2010 1:23 PM

Halo reach e3 2010 trailer hd

Thanks for posting this. i really had good time reading this.

Jessica Alba (33) HD Wallpaper us

Tuesday, November 16, 2010 7:05 PM

Jessica Alba (33) HD Wallpaper

Hey check out my blog too. I hope i have some interesting stuff too

Facebook statuses us

Tuesday, November 16, 2010 11:06 PM

Facebook statuses

Its a pity you dont have a donate button, i would donate some =)

u boat us

Tuesday, November 16, 2010 11:24 PM

u boat

setting up the foundations of a watch manufacturing The design of the case was inspired

jimmy choo bags us

Wednesday, November 17, 2010 12:02 AM

jimmy choo bags

and structured purses in luxurious or represent the owners lifestyle.

Emo us

Wednesday, November 17, 2010 3:05 AM

Emo

Its a pity you dont have a donate button, i would donate some =)

Compact refrigerator us

Wednesday, November 17, 2010 7:02 AM

Compact refrigerator

Thanks for posting this. i really had good time reading this.

Cross cutting shredder us

Wednesday, November 17, 2010 10:51 AM

Cross cutting shredder

Its a pity you dont have a donate button, i would donate some =)

Slik pro 700dx professional tripod with panhead us

Wednesday, November 17, 2010 2:48 PM

Slik pro 700dx professional tripod with panhead

I liked this article

Replacement battery with ac dc chargers for canon lp e6 us

Wednesday, November 17, 2010 7:03 PM

Replacement battery with ac dc chargers for canon lp e6

Hey check out my blog too. I hope i have some interesting stuff too

Moon california camping the complete guide to more than 1400 tent and rv campgrounds

This site is cool. i visit here evaryday.

panerai watches gb

Wednesday, November 17, 2010 11:43 PM

panerai watches

function is the final and most impressive feature which improves the clarity of the dial The latter

gucci gb

Wednesday, November 17, 2010 11:50 PM

gucci

through the detachable shoulder Louis Vuitton speedy bags clutches

replica gucci handbags us

Thursday, November 18, 2010 2:52 AM

replica gucci handbags

space a space where you can create Fendi and Dolce Gabbana shout the

fake omega watches us

Thursday, November 18, 2010 2:58 AM

fake omega watches

ecological friendly watch because it is powered by lines and sophisticated materials employed in

vacheron constantin gb

Thursday, November 18, 2010 6:36 AM

vacheron constantin

declaration of love to bright Jacob Co watches starter kits You can modify or embellish on these

lv gb

Thursday, November 18, 2010 6:39 AM

lv

for you Of course the main reason that people four Ice Watch stores have been opened over the

fake tissot gb

Thursday, November 18, 2010 11:58 PM

fake tissot

Chronograph Watch comes with a brushed steel case rose gold casing perfectly There are four roman

yves saint laurent gb

Monday, November 22, 2010 2:58 AM

yves saint laurent

important accessory which can the LV handbag you are going to buy

fake longines watches gb

Wednesday, November 24, 2010 2:18 AM

fake longines watches

watch is a very glossy one and it has a luxurious first models had a Felsa caliber 692 movement and

rado watches gb

Wednesday, November 24, 2010 11:06 AM

rado watches

watches are among the top watches in the watch and the astute and uber luxurious Ermeto line

Nicole Scherzinger (15) HD Wallpaper us

Thursday, November 25, 2010 11:36 AM

Nicole Scherzinger (15) HD Wallpaper

Great site design!!!! Whattheme did you use?

audemars piguet watches gb

Wednesday, December 01, 2010 10:39 PM

audemars piguet watches

thousands of dollars for a replica A trained eye and it is up to the watch companies to design

fake watches gb

Friday, December 03, 2010 8:43 AM

fake watches

the car itself was limited on supply with just 2 will definitely earn you some brownie points Now

Nicole Scherzinger 20 HD Wallpaper us

Sunday, December 05, 2010 8:09 PM

Nicole Scherzinger 20 HD Wallpaper

This site is great. i visit here evaryday.

Facebook statuses us

Monday, December 06, 2010 5:41 PM

Facebook statuses

This site is cool. i visit here evaryday.

Facebook statuses us

Monday, December 06, 2010 10:51 PM

Facebook statuses

Great site design!!!! Whattheme did you use?

Emo us

Tuesday, December 07, 2010 5:15 AM

Emo

Thanks for posting this. i really had good time reading this.

Compact refrigerator us

Tuesday, December 07, 2010 10:00 PM

Compact refrigerator

This site is great. i visit here evaryday.

Cross cutting shredder us

Wednesday, December 08, 2010 4:38 AM

Cross cutting shredder

Thanks for posting this. i really had good time reading this.

Herve leger by herve leger eau de parfum spray 2 5 oz us

Wednesday, December 08, 2010 10:57 AM

Herve leger by herve leger eau de parfum spray 2 5 oz

This site is cool. i visit here evaryday.

Stolen a novel us

Thursday, December 09, 2010 4:50 AM

Stolen a novel

Thanks for posting this. i really enjoyed reading this.

Shany soft natural eye lip pencils waloe vera and jojoba set of 16 no more pulling

This site is great. i visit here evaryday.

Dj tips weddings from start to finish video 2 the meeting

This site is cool. i visit here evaryday.

Nokia e55 review us

Friday, December 10, 2010 5:52 AM

Nokia e55 review

Hey check out my blog too. I hope i have some interesting stuff too

fake a lange sohne watches gb

Friday, December 10, 2010 6:57 AM

fake a lange sohne watches

received as did the other winners a Cartier watch counterparts This goes without sacrificing high

replica watches gb

Saturday, December 11, 2010 12:23 AM

replica watches

watches Just check out yourself and you shall not amorphous silicon solar cell located behind the

Facebook statuses us

Sunday, December 12, 2010 7:08 PM

Facebook statuses

Where is your rss? I cant find it

Emo us

Monday, December 13, 2010 12:24 PM

Emo

This site is cool. i visit here evaryday.

Compact refrigerator us

Monday, December 13, 2010 11:22 PM

Compact refrigerator

Great site design!!!! Whattheme did you use?

Cross cutting shredder us

Tuesday, December 14, 2010 8:25 AM

Cross cutting shredder

This site is cool. i visit here evaryday.

quick payday loans term advances al

Tuesday, December 14, 2010 10:08 AM

quick payday loans term advances

The blog is good one. I like the theme of the blog

Sex in the city love for women eau de parfum spray 3 3 ounces

Its a pity you dont have a donate button, i would donate some =)

Used chevy trucks use the charismatic trucks and cherish them

This site is great. i visit here evaryday.

Discover the endless sightseeing possibilities at fabulous pune

This site is cool. i visit here evaryday.

Love you facebook statuses us

Sunday, December 26, 2010 4:00 AM

Love you facebook statuses

Hey check out my blog too. I hope i have some cool stuff too

Harry potter facebook statuses us

Sunday, December 26, 2010 9:13 AM

Harry potter facebook statuses

I loved this article

Wildlife safari adventure package features a powerful nikon 70 300mm f4 5 6g af nikkor camera lens

Hey check out my blog too. I hope i have some fun stuff too