title:
Put the knife down and take a green herb, dude.
descrip:
One feller's views on the state of everyday computer science & its application (and now, OTHER STUFF) who isn't rich enough to shell out for www.myfreakinfirst-andlast-name.com
Using 89% of the same design the blog had in 2001 .
FOR ENTERTAINMENT PURPOSES ONLY!!!
Back-up your data and, when you bike,
always wear white .
As an Amazon Associate, I earn from qualifying purchases. Affiliate links in green .
x
MarkUpDown is the best Markdown editor for professionals on Windows 10.
It includes two-pane live preview, in-app uploads to imgur for image hosting, and MultiMarkdown table support.
Features you won't find anywhere else include...
You've wasted more than $15 of your time looking for a great Markdown editor.
Stop looking. MarkUpDown is the app you're looking for.
Learn more or head over to the 'Store now!
Thursday, May 03, 2012
The most annoying thing about setting up a WCF is the number of things that seem to work in the local testing server that'll explode in IIS. The local testing server that you can invoke with F5 is very lenient. But before we get into the complicated stuff, a quick list of System-Provided Bindings from Microsoft:WSHttpBinding A secure and interoperable binding that is suitable for non-duplex service contracts. BasicHttpBinding A binding that is suitable for communicating with WS-Basic Profile conformant Web services, for example, ASP.NET Web services (ASMX)-based services. This binding uses HTTP as the transport and text/XML as the default message encoding. WebHttpBinding A binding used to configure endpoints for WCF Web services that are exposed through HTTP requests instead of SOAP messages.
Fair warning: I've done this three or four times now to make sure things work, but I haven't started from scratch on a new machine to run through the steps as I present them, here. Could be wonky somewhere. YMMV . So let's start a WCF Service project. You select File >>> New Web Site >>>WCF Service. Save the new project in IIS's root folder . That'll create a project with the file structure seen below: Looking in Web.config, you'll see that, by default, this project has two endpoints. One is the MEX endpoint , which is nice, but not really the business end of things. The other is a wsHttpBinding. That's important, because, as we learned above, that expects to be called from a SOAP-compliant client. If you try hitting F5 off the bat, it'll seemingly work, first going to a URL like this one:http://localhost:50319 /WCFService1/Service.svc But if you try to view the GetData method, which is one of the two IService methods that Service.cs implemented by default, using a URL like this one:http://localhost:50319/WCFService1/Service.svc/GetData ... you get no response, just a 400 error. So it's worth saying that it's odd to have a SOAP client in my line of programming. You'd usually rather send out a very simple AJAX request to a URL from a web page to the WCF and receive some JSON back to parse in Javascript. The take-home is that we need to remove the wsHttpBinding (set up for SOAP) and set up webHttpBinding (ready for REST) instead. The endpoints that Visual Studio inserts into web.config by default are below:< endpoint address = " " binding = " wsHttpBinding " contract = " IService " > < identity > < dns value = " localhost " / > < / identity > < / endpoint > Our next step is to change that wsHttpBinding endpoint to one with webHttpBinding. I've also inserted the additional overhead of adding a JsonBehavior. Honestly, not sure what that's doing yet, but I think I want it.< system . serviceModel > < serviceHostingEnvironment aspNetCompatibilityEnabled = " false " / > < behaviors > < serviceBehaviors > < behavior name = " ServiceBehavior " > < serviceMetadata httpGetEnabled = " true " / > < serviceDebug includeExceptionDetailInFaults = " false " / > < / behavior > < / serviceBehaviors > < endpointBehaviors > < behavior name = " JsonBehavior " > < webHttp / > < / behavior > < / endpointBehaviors > < / behaviors > < services > < service name = " Service " behaviorConfiguration = " ServiceBehavior " > < endpoint address = " " binding = " webHttpBinding " behaviorConfiguration = " JsonBehavior " contract = " IService " > < identity > < dns value = " localhost " / > < / identity > < / endpoint > < endpoint address = " mex " binding = " mexHttpBinding " contract = " IMetadataExchange " / > < / service > < / services > < / system . serviceModel > (In case I've screwed up, the entire config is here .) Again, switching from wsHttpBinding to webHttpBinding makes it so that we can use a URL to access the method. With wsHttpBinding, you'd have to have a SOAP client , which involves insane amounts of overhead for most of my applications. There's more required than that, however. If you've got the same standard setup as I get in VS 2010, you've got two methods in the Service.cs file. One is pretty easy to set up to listen to query strings for its parameters;[ OperationContract] [ WebGet ( RequestFormat = WebMessageFormat. Json, ResponseFormat = WebMessageFormat. Json, BodyStyle = WebMessageBodyStyle. WrappedRequest) ] string GetData ( int value) ; Now, you should be able to nav to GetData and slap in a param of "?value=1231" and have that number repeat back to you with a URL like this:http://localhost:50319/WCFService1/Service.svc/GetData?value=10 You'll see "You entered: 10" (with quotes) in the web page. You can also leave the port off if you followed the instructions and created the dir in IIS' home dir and created the application using Internet Information Server (IIS) Manager. Go to your default web site, find your server's folder, right click, convert to application, and voila: Unfortunately, the other method in the default project (GetDataUsingDataContract ) is more complicated, as if you try to turn it into a GET-able method, your WCF Service will complain about the CompositeType hand-rolled datatype that's also part of the project VS 2010 dreams up for you.[OperationContract] CompositeType GetDataUsingDataContract(CompositeType composite); You can't webget that because CompositeType isn't serializable.Operation 'GetDataUsingDataContract' in contract 'IService' has a query variable named 'composite' of type 'CompositeType', but type 'CompositeType' is not convertible by 'QueryStringConverter'. Variables for UriTemplate query values must have types that can be converted by 'QueryStringConverter'. Whoops. I'm not going to go into serializing to JSON right now. All things considered, that's an easy afterthought after this XML config wading. So perhaps not the best composed, but that's today's lesson. (A decent walkthrough of a slightly different way to go about this here .)
Labels: c# , code , wcf , xml
posted by ruffin
at 5/03/2012 03:52:00 PM
Please enable JavaScript to view the comments powered by Disqus.
<< Older | Newer >>
All posts can be accessed here:
- Archives -
11/01/2001 - 12/01/2001
12/01/2001 - 01/01/2002
01/01/2002 - 02/01/2002
02/01/2002 - 03/01/2002
03/01/2002 - 04/01/2002
04/01/2002 - 05/01/2002
05/01/2002 - 06/01/2002
06/01/2002 - 07/01/2002
07/01/2002 - 08/01/2002
08/01/2002 - 09/01/2002
09/01/2002 - 10/01/2002
10/01/2002 - 11/01/2002
11/01/2002 - 12/01/2002
12/01/2002 - 01/01/2003
01/01/2003 - 02/01/2003
02/01/2003 - 03/01/2003
03/01/2003 - 04/01/2003
04/01/2003 - 05/01/2003
05/01/2003 - 06/01/2003
06/01/2003 - 07/01/2003
07/01/2003 - 08/01/2003
08/01/2003 - 09/01/2003
09/01/2003 - 10/01/2003
10/01/2003 - 11/01/2003
11/01/2003 - 12/01/2003
12/01/2003 - 01/01/2004
01/01/2004 - 02/01/2004
02/01/2004 - 03/01/2004
03/01/2004 - 04/01/2004
04/01/2004 - 05/01/2004
05/01/2004 - 06/01/2004
06/01/2004 - 07/01/2004
07/01/2004 - 08/01/2004
08/01/2004 - 09/01/2004
09/01/2004 - 10/01/2004
10/01/2004 - 11/01/2004
11/01/2004 - 12/01/2004
12/01/2004 - 01/01/2005
01/01/2005 - 02/01/2005
02/01/2005 - 03/01/2005
03/01/2005 - 04/01/2005
04/01/2005 - 05/01/2005
05/01/2005 - 06/01/2005
06/01/2005 - 07/01/2005
07/01/2005 - 08/01/2005
08/01/2005 - 09/01/2005
09/01/2005 - 10/01/2005
10/01/2005 - 11/01/2005
11/01/2005 - 12/01/2005
12/01/2005 - 01/01/2006
01/01/2006 - 02/01/2006
02/01/2006 - 03/01/2006
03/01/2006 - 04/01/2006
04/01/2006 - 05/01/2006
05/01/2006 - 06/01/2006
06/01/2006 - 07/01/2006
07/01/2006 - 08/01/2006
08/01/2006 - 09/01/2006
09/01/2006 - 10/01/2006
10/01/2006 - 11/01/2006
11/01/2006 - 12/01/2006
12/01/2006 - 01/01/2007
01/01/2007 - 02/01/2007
02/01/2007 - 03/01/2007
03/01/2007 - 04/01/2007
04/01/2007 - 05/01/2007
05/01/2007 - 06/01/2007
06/01/2007 - 07/01/2007
07/01/2007 - 08/01/2007
08/01/2007 - 09/01/2007
09/01/2007 - 10/01/2007
10/01/2007 - 11/01/2007
11/01/2007 - 12/01/2007
12/01/2007 - 01/01/2008
01/01/2008 - 02/01/2008
02/01/2008 - 03/01/2008
03/01/2008 - 04/01/2008
04/01/2008 - 05/01/2008
05/01/2008 - 06/01/2008
06/01/2008 - 07/01/2008
07/01/2008 - 08/01/2008
08/01/2008 - 09/01/2008
09/01/2008 - 10/01/2008
10/01/2008 - 11/01/2008
11/01/2008 - 12/01/2008
12/01/2008 - 01/01/2009
01/01/2009 - 02/01/2009
02/01/2009 - 03/01/2009
03/01/2009 - 04/01/2009
04/01/2009 - 05/01/2009
05/01/2009 - 06/01/2009
06/01/2009 - 07/01/2009
07/01/2009 - 08/01/2009
08/01/2009 - 09/01/2009
09/01/2009 - 10/01/2009
10/01/2009 - 11/01/2009
11/01/2009 - 12/01/2009
12/01/2009 - 01/01/2010
01/01/2010 - 02/01/2010
02/01/2010 - 03/01/2010
03/01/2010 - 04/01/2010
04/01/2010 - 05/01/2010
05/01/2010 - 06/01/2010
06/01/2010 - 07/01/2010
07/01/2010 - 08/01/2010
08/01/2010 - 09/01/2010
09/01/2010 - 10/01/2010
10/01/2010 - 11/01/2010
11/01/2010 - 12/01/2010
12/01/2010 - 01/01/2011
01/01/2011 - 02/01/2011
02/01/2011 - 03/01/2011
03/01/2011 - 04/01/2011
04/01/2011 - 05/01/2011
05/01/2011 - 06/01/2011
06/01/2011 - 07/01/2011
07/01/2011 - 08/01/2011
08/01/2011 - 09/01/2011
09/01/2011 - 10/01/2011
10/01/2011 - 11/01/2011
11/01/2011 - 12/01/2011
12/01/2011 - 01/01/2012
01/01/2012 - 02/01/2012
02/01/2012 - 03/01/2012
03/01/2012 - 04/01/2012
04/01/2012 - 05/01/2012
05/01/2012 - 06/01/2012
06/01/2012 - 07/01/2012
07/01/2012 - 08/01/2012
08/01/2012 - 09/01/2012
09/01/2012 - 10/01/2012
10/01/2012 - 11/01/2012
11/01/2012 - 12/01/2012
12/01/2012 - 01/01/2013
01/01/2013 - 02/01/2013
02/01/2013 - 03/01/2013
03/01/2013 - 04/01/2013
04/01/2013 - 05/01/2013
05/01/2013 - 06/01/2013
06/01/2013 - 07/01/2013
07/01/2013 - 08/01/2013
08/01/2013 - 09/01/2013
09/01/2013 - 10/01/2013
10/01/2013 - 11/01/2013
11/01/2013 - 12/01/2013
12/01/2013 - 01/01/2014
01/01/2014 - 02/01/2014
02/01/2014 - 03/01/2014
03/01/2014 - 04/01/2014
04/01/2014 - 05/01/2014
05/01/2014 - 06/01/2014
06/01/2014 - 07/01/2014
07/01/2014 - 08/01/2014
08/01/2014 - 09/01/2014
09/01/2014 - 10/01/2014
10/01/2014 - 11/01/2014
11/01/2014 - 12/01/2014
12/01/2014 - 01/01/2015
01/01/2015 - 02/01/2015
02/01/2015 - 03/01/2015
03/01/2015 - 04/01/2015
04/01/2015 - 05/01/2015
05/01/2015 - 06/01/2015
06/01/2015 - 07/01/2015
07/01/2015 - 08/01/2015
08/01/2015 - 09/01/2015
09/01/2015 - 10/01/2015
10/01/2015 - 11/01/2015
11/01/2015 - 12/01/2015
12/01/2015 - 01/01/2016
01/01/2016 - 02/01/2016
02/01/2016 - 03/01/2016
03/01/2016 - 04/01/2016
04/01/2016 - 05/01/2016
05/01/2016 - 06/01/2016
06/01/2016 - 07/01/2016
07/01/2016 - 08/01/2016
08/01/2016 - 09/01/2016
09/01/2016 - 10/01/2016
10/01/2016 - 11/01/2016
11/01/2016 - 12/01/2016
12/01/2016 - 01/01/2017
01/01/2017 - 02/01/2017
02/01/2017 - 03/01/2017
03/01/2017 - 04/01/2017
05/01/2017 - 06/01/2017
07/01/2017 - 08/01/2017
08/01/2017 - 09/01/2017
09/01/2017 - 10/01/2017
10/01/2017 - 11/01/2017
11/01/2017 - 12/01/2017
12/01/2017 - 01/01/2018
01/01/2018 - 02/01/2018
02/01/2018 - 03/01/2018
03/01/2018 - 04/01/2018
04/01/2018 - 05/01/2018
05/01/2018 - 06/01/2018
06/01/2018 - 07/01/2018
07/01/2018 - 08/01/2018
08/01/2018 - 09/01/2018
09/01/2018 - 10/01/2018
10/01/2018 - 11/01/2018
11/01/2018 - 12/01/2018
01/01/2019 - 02/01/2019
02/01/2019 - 03/01/2019
03/01/2019 - 04/01/2019
04/01/2019 - 05/01/2019
05/01/2019 - 06/01/2019
06/01/2019 - 07/01/2019
07/01/2019 - 08/01/2019
08/01/2019 - 09/01/2019
09/01/2019 - 10/01/2019
10/01/2019 - 11/01/2019
11/01/2019 - 12/01/2019
12/01/2019 - 01/01/2020
01/01/2020 - 02/01/2020
02/01/2020 - 03/01/2020
03/01/2020 - 04/01/2020
04/01/2020 - 05/01/2020
05/01/2020 - 06/01/2020
06/01/2020 - 07/01/2020
07/01/2020 - 08/01/2020
08/01/2020 - 09/01/2020
09/01/2020 - 10/01/2020
10/01/2020 - 11/01/2020
11/01/2020 - 12/01/2020
12/01/2020 - 01/01/2021
01/01/2021 - 02/01/2021
02/01/2021 - 03/01/2021
03/01/2021 - 04/01/2021
04/01/2021 - 05/01/2021
05/01/2021 - 06/01/2021
06/01/2021 - 07/01/2021
07/01/2021 - 08/01/2021
08/01/2021 - 09/01/2021
09/01/2021 - 10/01/2021
10/01/2021 - 11/01/2021
11/01/2021 - 12/01/2021
01/01/2022 - 02/01/2022
02/01/2022 - 03/01/2022
03/01/2022 - 04/01/2022
04/01/2022 - 05/01/2022
05/01/2022 - 06/01/2022
06/01/2022 - 07/01/2022
07/01/2022 - 08/01/2022
08/01/2022 - 09/01/2022
09/01/2022 - 10/01/2022
10/01/2022 - 11/01/2022
11/01/2022 - 12/01/2022
12/01/2022 - 01/01/2023
01/01/2023 - 02/01/2023
02/01/2023 - 03/01/2023
03/01/2023 - 04/01/2023
04/01/2023 - 05/01/2023
05/01/2023 - 06/01/2023
06/01/2023 - 07/01/2023
09/01/2023 - 10/01/2023
11/01/2023 - 12/01/2023
12/01/2023 - 01/01/2024
02/01/2024 - 03/01/2024
03/01/2024 - 04/01/2024
04/01/2024 - 05/01/2024
05/01/2024 - 06/01/2024
06/01/2024 - 07/01/2024
07/01/2024 - 08/01/2024
08/01/2024 - 09/01/2024
10/01/2024 - 11/01/2024
Just the last year o' posts:
URLs I want to remember:
* Atari 2600 programming on your Mac
* joel on software (tip pt )
* Professional links: resume , github , paltry StackOverflow
* Regular Expression Introduction
(copy )
* The hex editor whose name I forget
* JSONLint to pretty-ify JSON
* Using CommonDialog in VB 6
* Free zip utils
*
git repo mapped drive setup
*
Regex Tester
* Read the bits about the zone
* Find column in sql server db by name
* Giant ASCII Textifier
in Stick Figures
(in Ivrit )
* Quick intro to Javascript
* Don't [over-]sweat "micro-optimization"
* Parsing str's in VB6
* .ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); (src )
* Break on a Lenovo T430: Fn+Alt+B
email if ya gotta ,
RSS if ya wanna RSS , (?_?), ยข, & ? if you're keypadless
- Archives -
11/01/2001 - 12/01/2001
12/01/2001 - 01/01/2002
01/01/2002 - 02/01/2002
02/01/2002 - 03/01/2002
03/01/2002 - 04/01/2002
04/01/2002 - 05/01/2002
05/01/2002 - 06/01/2002
06/01/2002 - 07/01/2002
07/01/2002 - 08/01/2002
08/01/2002 - 09/01/2002
09/01/2002 - 10/01/2002
10/01/2002 - 11/01/2002
11/01/2002 - 12/01/2002
12/01/2002 - 01/01/2003
01/01/2003 - 02/01/2003
02/01/2003 - 03/01/2003
03/01/2003 - 04/01/2003
04/01/2003 - 05/01/2003
05/01/2003 - 06/01/2003
06/01/2003 - 07/01/2003
07/01/2003 - 08/01/2003
08/01/2003 - 09/01/2003
09/01/2003 - 10/01/2003
10/01/2003 - 11/01/2003
11/01/2003 - 12/01/2003
12/01/2003 - 01/01/2004
01/01/2004 - 02/01/2004
02/01/2004 - 03/01/2004
03/01/2004 - 04/01/2004
04/01/2004 - 05/01/2004
05/01/2004 - 06/01/2004
06/01/2004 - 07/01/2004
07/01/2004 - 08/01/2004
08/01/2004 - 09/01/2004
09/01/2004 - 10/01/2004
10/01/2004 - 11/01/2004
11/01/2004 - 12/01/2004
12/01/2004 - 01/01/2005
01/01/2005 - 02/01/2005
02/01/2005 - 03/01/2005
03/01/2005 - 04/01/2005
04/01/2005 - 05/01/2005
05/01/2005 - 06/01/2005
06/01/2005 - 07/01/2005
07/01/2005 - 08/01/2005
08/01/2005 - 09/01/2005
09/01/2005 - 10/01/2005
10/01/2005 - 11/01/2005
11/01/2005 - 12/01/2005
12/01/2005 - 01/01/2006
01/01/2006 - 02/01/2006
02/01/2006 - 03/01/2006
03/01/2006 - 04/01/2006
04/01/2006 - 05/01/2006
05/01/2006 - 06/01/2006
06/01/2006 - 07/01/2006
07/01/2006 - 08/01/2006
08/01/2006 - 09/01/2006
09/01/2006 - 10/01/2006
10/01/2006 - 11/01/2006
11/01/2006 - 12/01/2006
12/01/2006 - 01/01/2007
01/01/2007 - 02/01/2007
02/01/2007 - 03/01/2007
03/01/2007 - 04/01/2007
04/01/2007 - 05/01/2007
05/01/2007 - 06/01/2007
06/01/2007 - 07/01/2007
07/01/2007 - 08/01/2007
08/01/2007 - 09/01/2007
09/01/2007 - 10/01/2007
10/01/2007 - 11/01/2007
11/01/2007 - 12/01/2007
12/01/2007 - 01/01/2008
01/01/2008 - 02/01/2008
02/01/2008 - 03/01/2008
03/01/2008 - 04/01/2008
04/01/2008 - 05/01/2008
05/01/2008 - 06/01/2008
06/01/2008 - 07/01/2008
07/01/2008 - 08/01/2008
08/01/2008 - 09/01/2008
09/01/2008 - 10/01/2008
10/01/2008 - 11/01/2008
11/01/2008 - 12/01/2008
12/01/2008 - 01/01/2009
01/01/2009 - 02/01/2009
02/01/2009 - 03/01/2009
03/01/2009 - 04/01/2009
04/01/2009 - 05/01/2009
05/01/2009 - 06/01/2009
06/01/2009 - 07/01/2009
07/01/2009 - 08/01/2009
08/01/2009 - 09/01/2009
09/01/2009 - 10/01/2009
10/01/2009 - 11/01/2009
11/01/2009 - 12/01/2009
12/01/2009 - 01/01/2010
01/01/2010 - 02/01/2010
02/01/2010 - 03/01/2010
03/01/2010 - 04/01/2010
04/01/2010 - 05/01/2010
05/01/2010 - 06/01/2010
06/01/2010 - 07/01/2010
07/01/2010 - 08/01/2010
08/01/2010 - 09/01/2010
09/01/2010 - 10/01/2010
10/01/2010 - 11/01/2010
11/01/2010 - 12/01/2010
12/01/2010 - 01/01/2011
01/01/2011 - 02/01/2011
02/01/2011 - 03/01/2011
03/01/2011 - 04/01/2011
04/01/2011 - 05/01/2011
05/01/2011 - 06/01/2011
06/01/2011 - 07/01/2011
07/01/2011 - 08/01/2011
08/01/2011 - 09/01/2011
09/01/2011 - 10/01/2011
10/01/2011 - 11/01/2011
11/01/2011 - 12/01/2011
12/01/2011 - 01/01/2012
01/01/2012 - 02/01/2012
02/01/2012 - 03/01/2012
03/01/2012 - 04/01/2012
04/01/2012 - 05/01/2012
05/01/2012 - 06/01/2012
06/01/2012 - 07/01/2012
07/01/2012 - 08/01/2012
08/01/2012 - 09/01/2012
09/01/2012 - 10/01/2012
10/01/2012 - 11/01/2012
11/01/2012 - 12/01/2012
12/01/2012 - 01/01/2013
01/01/2013 - 02/01/2013
02/01/2013 - 03/01/2013
03/01/2013 - 04/01/2013
04/01/2013 - 05/01/2013
05/01/2013 - 06/01/2013
06/01/2013 - 07/01/2013
07/01/2013 - 08/01/2013
08/01/2013 - 09/01/2013
09/01/2013 - 10/01/2013
10/01/2013 - 11/01/2013
11/01/2013 - 12/01/2013
12/01/2013 - 01/01/2014
01/01/2014 - 02/01/2014
02/01/2014 - 03/01/2014
03/01/2014 - 04/01/2014
04/01/2014 - 05/01/2014
05/01/2014 - 06/01/2014
06/01/2014 - 07/01/2014
07/01/2014 - 08/01/2014
08/01/2014 - 09/01/2014
09/01/2014 - 10/01/2014
10/01/2014 - 11/01/2014
11/01/2014 - 12/01/2014
12/01/2014 - 01/01/2015
01/01/2015 - 02/01/2015
02/01/2015 - 03/01/2015
03/01/2015 - 04/01/2015
04/01/2015 - 05/01/2015
05/01/2015 - 06/01/2015
06/01/2015 - 07/01/2015
07/01/2015 - 08/01/2015
08/01/2015 - 09/01/2015
09/01/2015 - 10/01/2015
10/01/2015 - 11/01/2015
11/01/2015 - 12/01/2015
12/01/2015 - 01/01/2016
01/01/2016 - 02/01/2016
02/01/2016 - 03/01/2016
03/01/2016 - 04/01/2016
04/01/2016 - 05/01/2016
05/01/2016 - 06/01/2016
06/01/2016 - 07/01/2016
07/01/2016 - 08/01/2016
08/01/2016 - 09/01/2016
09/01/2016 - 10/01/2016
10/01/2016 - 11/01/2016
11/01/2016 - 12/01/2016
12/01/2016 - 01/01/2017
01/01/2017 - 02/01/2017
02/01/2017 - 03/01/2017
03/01/2017 - 04/01/2017
05/01/2017 - 06/01/2017
07/01/2017 - 08/01/2017
08/01/2017 - 09/01/2017
09/01/2017 - 10/01/2017
10/01/2017 - 11/01/2017
11/01/2017 - 12/01/2017
12/01/2017 - 01/01/2018
01/01/2018 - 02/01/2018
02/01/2018 - 03/01/2018
03/01/2018 - 04/01/2018
04/01/2018 - 05/01/2018
05/01/2018 - 06/01/2018
06/01/2018 - 07/01/2018
07/01/2018 - 08/01/2018
08/01/2018 - 09/01/2018
09/01/2018 - 10/01/2018
10/01/2018 - 11/01/2018
11/01/2018 - 12/01/2018
01/01/2019 - 02/01/2019
02/01/2019 - 03/01/2019
03/01/2019 - 04/01/2019
04/01/2019 - 05/01/2019
05/01/2019 - 06/01/2019
06/01/2019 - 07/01/2019
07/01/2019 - 08/01/2019
08/01/2019 - 09/01/2019
09/01/2019 - 10/01/2019
10/01/2019 - 11/01/2019
11/01/2019 - 12/01/2019
12/01/2019 - 01/01/2020
01/01/2020 - 02/01/2020
02/01/2020 - 03/01/2020
03/01/2020 - 04/01/2020
04/01/2020 - 05/01/2020
05/01/2020 - 06/01/2020
06/01/2020 - 07/01/2020
07/01/2020 - 08/01/2020
08/01/2020 - 09/01/2020
09/01/2020 - 10/01/2020
10/01/2020 - 11/01/2020
11/01/2020 - 12/01/2020
12/01/2020 - 01/01/2021
01/01/2021 - 02/01/2021
02/01/2021 - 03/01/2021
03/01/2021 - 04/01/2021
04/01/2021 - 05/01/2021
05/01/2021 - 06/01/2021
06/01/2021 - 07/01/2021
07/01/2021 - 08/01/2021
08/01/2021 - 09/01/2021
09/01/2021 - 10/01/2021
10/01/2021 - 11/01/2021
11/01/2021 - 12/01/2021
01/01/2022 - 02/01/2022
02/01/2022 - 03/01/2022
03/01/2022 - 04/01/2022
04/01/2022 - 05/01/2022
05/01/2022 - 06/01/2022
06/01/2022 - 07/01/2022
07/01/2022 - 08/01/2022
08/01/2022 - 09/01/2022
09/01/2022 - 10/01/2022
10/01/2022 - 11/01/2022
11/01/2022 - 12/01/2022
12/01/2022 - 01/01/2023
01/01/2023 - 02/01/2023
02/01/2023 - 03/01/2023
03/01/2023 - 04/01/2023
04/01/2023 - 05/01/2023
05/01/2023 - 06/01/2023
06/01/2023 - 07/01/2023
09/01/2023 - 10/01/2023
11/01/2023 - 12/01/2023
12/01/2023 - 01/01/2024
02/01/2024 - 03/01/2024
03/01/2024 - 04/01/2024
04/01/2024 - 05/01/2024
05/01/2024 - 06/01/2024
06/01/2024 - 07/01/2024
07/01/2024 - 08/01/2024
08/01/2024 - 09/01/2024
10/01/2024 - 11/01/2024