The mysteries of software development and networking... RSS 2.0



 Monday, March 24, 2008

The 22nd of April the Maine Developer Network is organizing a Geek Lunch. We'll be meeting at the State of Maine offices in Augusta to listen to Chris Bowen present on LINQ & Language Improvements in C# 3.0/VB 9.

Pizza will be provided and attendance is free and open for everyone!

More info and RSVP here.

Monday, March 24, 2008 11:52:01 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
C# | General | LINQ
 Sunday, March 16, 2008

My article for the Software Developer Network Magazine has been printed in the magazine. If you don't receive the magazine you can read the article here.

Sunday, March 16, 2008 10:39:07 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
AOL | Vista
 Thursday, March 06, 2008

Slowly but surely more website are starting to support CardSpace. I’ve recently blogged about using Cardspace in conjunction with an OpenID from MyOpenID.com to log on to http://dev.aol.com/. Just the other day I discovered that that my hosting provider has started a beta program allowing me to sign on to my website’s control panel using CardSpace. Never one to shy away from a beta program I gave it a swirl.

After logging in to the website using my regular username/password I proceeded to my account page. Here a new button has been added ‘Bind card to account’, after clicking the button the CardSpace cardselector on my Vista machine opened up and I was allowed to select a card. Press OK and all was good. Time for a little test. Log out of the website. Then go back to the logon page and now instead of using my username/password I can use my CardSpace card to logon. And sure enough it worked!

Next came the real test. Since I also have DiscountASP hosting the website for our user group (Maine Developer Network) I tried to logon to this account using my CardSpace card. While doing so I discovered that this did not work. I could not bind the same card to two different accounts. I had to dive in a little deeper, but soon discovered this not to be a limitation of CardSpace, but rather, the website does not support multiple accounts to one card.
The way to solve this would be to implement an account selector which would become available after logging using the CardSpace card. The same would be true if DiscountASP would support OpenID. Then one ID would have to be attached to multiple accounts.

Moral of the story: We’re a long way away from the ‘one ID to rule them all’. There is more to it than replacing your username/password validation with an OpenID or CardSpace control. You will have to reconsider the relationship between user accounts and your customer.

Thursday, March 06, 2008 1:49:26 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
Architecture | General

Silverlight 2.0 beta 1 is offering a DataGrid out of the box. Kathy Kam has a a great sample app showing off all the controls in Silverlight and providing you with a view of the underlying XAML.

Haven't installed Silverlight 2.0 yet? It'll install automatically, but you will have to restart the browser (at least, I had to).

Thursday, March 06, 2008 1:25:44 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
Silverlight
 Wednesday, February 27, 2008

The next version of Visual Studio Team System and Team Foundation Server is codenamed "Rosario". No formal release date has been made public yet, but if you want to see and participate in upcoming features, then check out the spec-share page on MSDN: http://msdn2.microsoft.com/en-us/vstudio/bb936702.aspx.

Wednesday, February 27, 2008 8:48:51 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
Team System

Just a quick reminder to all who haven't RSVP-ed yet: the Maine Developer Network user group meeting this Friday is still on.

The weather forecast for Friday looks good. So hope to see you all there!

Topic
An introduction to Unit Test, Test-Driven Development and Mock Objects As software development projects grow over the course of months and years, it can be increasingly difficult to manage quality and consistency. With the help of Visual Studio 2005, Test-Driven Development (TDD) can be used with very little effort to insure constant, high-quality code is written during the lifetime of your projects. In addition, you'll see how to create and use mock objects to logically separate development efforts on different tiers of your application to prevent blocking issues.

Speaker
Speaker will be Russ Nemhauser.
Russ Nemhauser is a Microsoft ASP.NET MVP and a Microsoft Certified Professional, and has served as an Architect, Developer, Team Leader, and Project Manager over the past several years. His projects have included enterprise applications, online commerce sites, and corporate intranets for Wall Street, Universal Studios, Microsoft, Seagram, and others. Russ actively participates in the development community, speaking at several conferences and user groups each year. He also writes for several technical magazines and industry web sites.

Wednesday, February 27, 2008 8:40:49 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
General
 Tuesday, February 26, 2008

On Friday the 28th of March 2008 the Software Developer Network in the Netherlands will host the 'Expedition 2008' Software Developer Event.

Below is an overview of the sessions. For more information and registration go to: http://www.sdn.nl/Default.aspx?tabid=280

Sessions

C#

Visual Basic.Net
DotNetNuke
Delphi
Inform. Worker
FoxPro
VO/Vulcan
VS2008 launch
8:30
Registratie / Ontvangst
9:00

WPF Styles & Templates

Jo-wen Mei

Workflow Foundation a la 2008

Maurice de Beijer

DotNetNuke - implementatie in de praktijk

Stefan Kamphuis

Easily migrate Delphi apps to C/S with Advantage Database 9

Joachim Dürr

Microsoft CRM 4.0 Plug-In Architectuur

Ralf van Gellekom &
 Martijn Muilwijk

On the Dark Side of FoxPro (Part 1)

Christof Wollenhaupt

Visual Basic 2008 - What's new

André Obelink

10:15
Pauze - 30 min.
10:45

Introduction Using LINQ programming model

Marcel de Vries

Ontwikkel Smart Client en Office toepassingen in Visual Studio 2008

Maarten van Stam

Enhance your modules using Token Replace

Sebastian Leupold

Delphi Agile Techniques

Pawel Glowacki

Performance Management met Performance-Point Server

Hans Geurtsen

On the Dark Side of FoxPro (Part 2)

Christof Wollenhaupt

What’s new in SQL Server 2008

Peter ter Braake

12:00
Lunch - 60 min.
13:00

C# 3.0 en Rhino Mocks maken unit testen weer interessant!

Dennis Doomen

ASP.NET 3.5 Extensions

Thomas Huijer

DotNetNuke 5: New Features

Sebastian Leupold

Samenwerking Win32 en .NET met Delphi en Hydra 3

Bob Swart

SQL server 2008: What's hot?

Donald Hessing &
 Reinhard Brongers

Werken met relationele databases in .Net en Vulcan.Net

Bert Dingemans

LINQ to SQL

Anko Duizer

14:15
Pauze - 15 min.
14:30

Domein Gedreven Programmeren met C# 3.0

A. Boonzaaijer &
 P.J. vd Sande

SQL Server 2008 - een eerste blik voor ontwikkelaars

Hugo Kornelis

Ask The Expert

Leigh Pointer

Gebruik je Delphi kennis XPlatform

Thaddy de Koning

Building Internet Sites with MOSS 2007

Donald Hessing & Marco Scholten

Webservices met Vulcan?

André Wisse

IIS 7 voor Ontwikkelaars

Sander Gerz

15:45
Pauze - 30 min.
16:15

Algemene Ledenvergadering SDN

Quality Tools in VS2008

Dennis Vroegop

17:30
Einde

Tuesday, February 26, 2008 10:36:35 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
General
 Friday, February 15, 2008

On Gert 'data dude' Drapers blog there is the announcement for Power Tools for Visual Studio Team System 2008 Database Edition.

Features include:

  • Command line SQL Static Code Analysis execution through MSBuild;
  • Data Generation Wizard;
  • File based data generator;
  • XML based data generator;
  • Unique Regular Expression generator;
  • Refactoring Command Generator has been made available as a MSBuild task;
  • Two new test conditions for Database Unit Tests:
    • ChecksumCondition – Which you can use to verify that the checksum of the data set returned by a database unit test matches the checksum of an expected data set.
    • ExpectedSchemaTestCondition – Which you use to verify that the column names and data types of the returned data set match expected values.
  •  

    Friday, February 15, 2008 6:29:52 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    Team System

    Windows Vista Service Pack 1 is now available as a download on Microsoft MSDN Subscription Downloads.

    For the release notes, see http://download.microsoft.com/download/5/4/2/5429cde5-32d4-4e55-bf9a-553111438d86/relnotes.htm.

    For an overview of significant changes and improvements, see http://go.microsoft.com/fwlink/?LinkID=107921.

    For a list of the hotfixes and security updates included in SP1, see http://go.microsoft.com/fwlink/?LinkID=107922.

    Friday, February 15, 2008 6:15:11 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    Vista
     Monday, January 28, 2008
    In this blog the release schedule for SQL Server is explained and it becomes clear that SQL Server 2008 won't become available until 2008-Q3. Now aside from SQL Server 2008 not becoming available, this also means that the business intelligence suite which comes with SQL Server, the one you need to create SSIS packages and SQL Server reports, will not RTM until Q3. This in turn means that you won't be able to use these designers in Visual Studio 2008.

    The Business Intelligence Suite uses the Visual Studio Shell and integrates in such an excellent manner that it is quite thightly bound to a specific version of Visual Studio. The SQL Server 2005 Suite is bound to VS2005 and the SQL Server 2008 Suite is bound to VS2008. So if you're planning on moving to VS2008 you'll have to run VS2005 as well, at least until 2008-Q3.

    Monday, January 28, 2008 1:43:46 AM (Eastern Standard Time, UTC-05:00)  #    Comments [1] -
    SQL | Team System
     Thursday, January 17, 2008

    I was writing some code today to map online drive and files to a local objecttree. So I created a custom file and directory object and a directory holds subdirectories and files.

    Something like this:

    public class File
    {
        public string Name { get; set; }
    }

    public class Directory
    {
        public string Name { get; set; }
        public List<Directory> SubDirectories { get; set; }
        public List<File> Files { get; set; }
    }

    Now I wanted to have a method which tells me how many files are in a folder, including all the subfolders. This is essentially a recursive select of the number of files per directory and then the sum of the files.

    So I implemented a LINQ statement:

    public int GetNumberOfFiles()
    {
        int total = ( from dir in SubDirectories
                      select dir.Files.Count ).Sum();
        return total;
    }

    Now this will only get the sum of the number of files in the directories immediately below the current. Let's add a little recursion:

    public int GetNumberOfFiles()
    {
        int total = ( from dir in SubDirectories
                      select dir.Files.Count + dir.GetNumberOfFiles() ).Sum();
        return total;
    }

    Pretty nifty!

    Thursday, January 17, 2008 3:08:35 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    C#
     Sunday, January 13, 2008

    In the .NET Framework, most of the time, the name of an assembly matches the namespace of the classes in that assembly.

    Since WCF is kind of an add-on to the .NET 2.0 Framework this is not quite true for the assembly System.ServiceModel.Web.dll

    Below a screenshot of what .NET Reflector shows to be inside this assembly.

    As you can see this assembly extends a number of namespaces like System.Runtime.Serialization and System.Collections.ObjectModel.

    The Json serialization classes are also in this assembly.

    Sunday, January 13, 2008 10:42:42 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    .NET | WCF
     Friday, January 11, 2008

    Okay, so I'm having a carstarter installed in my car and obviously have nothing better to do than keep tinkering with this DSL stuff.

    So I'm thinking... If we create a DSL for the person writing the code, then the debug experience should also be DSL-like. Now I'm not about to write my own debugger, but instead of showing a plain DateTime (what kind of datatype is that anyway?!?!?) we're talking animals, persons and real 'talk' date of birth stuff here.

    So I create a special DateOfBirth class which overrides the ToString() method and this creates a 'pretty' experience in my debug window. Notice the values for DateOfBirth. This could ofcourse be extended to person, which is still displayed as the same old school type information: 'DSL.Person'.

    The complete code comes at the end of this post, but lets have a look at te code complexity when going from

    Person p = new Person();
    p.DateOfBirth = new DateTime(1972,9,25);

    to our DSL :-)

    I guess the code is not too bad. Visual Studio still scores it green on the maintainability scale, but it is clear that quite a large amount of code is needed to create a DSL. And DSL's like this get more context sensitive. Imagine if I would also like to support birds with my DSL? Birds get hatched not born. I'd have to expand my extensions class, or maybe create a whole new set of classes and methods, having a class 'HatchedOn'.

    Anyway, they just called, my car is done.

    Here is the code for the final sample:

    namespace DSL
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person mark = Person.Named("Mark").BornOn(Day.the25th).Of(Month.September).InTheYear(1972);
                Animal watson = Animal.Named("Watson").BornOn(Day.the2nd).Of(Month.January).InTheYear(2001).AndItIsA(Animal.KindOf.Dog);
            }
        }


        public class DateOfBirth
        {
            public int Year;
            public Month Month;
            public Day Day;

            public static implicit operator DateTime(DateOfBirth dob)
            {
                return new DateTime(dob.Year, (int)dob.Month, (int)dob.Year);
            }

            public override string ToString()
            {
                return "Born on " + Day.ToString() + " of " + Month.ToString() + " in the year " + Year.ToString() + ".";
            }
        }

        public enum Day : int
        {
            the1st = 1,
            the2nd = 2,
            the25th = 25
        }

        public enum Month : int
        {
            January = 1,
            February = 2,
            September = 9
        }

        public interface IDateOfBirth
        {
            DateOfBirth DateOfBirth { get; set; }
        }

        public class Person : IDateOfBirth
        {
            public DateOfBirth DateOfBirth { get; set; }
            public string Name { get; set; }

            public static Person Named(string name)
            {
                Person p = new Person(name);
                p.DateOfBirth = new DateOfBirth();
                return p;
            }

            protected Person(string name)
            {
                Name = name;
            }
        }

        public class Animal : IDateOfBirth
        {
            public enum KindOf
            {
                Dog,
                Cat
            }

            public DateOfBirth DateOfBirth { get; set; }
            public string Name { get; set; }
            public KindOf KindOfAnimal { get; set; }

            public static Animal Named(string name)
            {
                Animal animal = new Animal();
                animal.Name = name;
                animal.DateOfBirth = new DateOfBirth();
                return animal;
            }
            public Animal AndItIsA(KindOf kind)
            {
                KindOfAnimal = kind;
                return this;
            }
        }


        public static class DateOfBirthExtensions
        {
            public static T BornOn<T>(this T p, Day day) where T : IDateOfBirth
            {
                p.DateOfBirth.Day = day;
                return p;
            }

            public static T Of<T>(this T p, Month month)  where T : IDateOfBirth
            {
                p.DateOfBirth.Month = month;
                return p;
            }

            public static T InTheYear<T>(this T p, int year)  where T : IDateOfBirth
            {
                p.DateOfBirth.Year = year;
                return p;
            }
        }

    }

     

    Friday, January 11, 2008 8:48:37 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    C#

    I've decided working with enumerations beats working with generics. So now I've taken my little DSL experiment back to enumerations and started implementing the DateOfBirth DSL as a generic extension method.

    Since the compiler infers the type based on the actual parameters used you don't need to supply the type when using the extensions methods. Very cool!

    Now my DateOfBirthExtensions can work on anything that implements the IDateOfBirth interface, be it a person or an animal :-)

     

    namespace DSL
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person mark = Person.Named("Mark").BornOn(Day.theTwentyFifth).Of(Month.September).InTheYear(1972);
                Animal watson = Animal.Named("Watson").BornOn(Day.theSecond).Of(Month.January).InTheYear(2001).AndItIsA(Animal.KindOf.Dog);
            }
        }

        public enum Day : int
        {
            theFirst = 1,
            theSecond = 2,
            theTwentyFifth = 25
        }

        public enum Month : int
        {
            January = 1,
            February = 2,
            September = 9
        }

        public interface IDateOfBirth
        {
            DateTime DateOfBirth { get; set; }
        }

        public class Person : IDateOfBirth
        {
            public DateTime DateOfBirth { get; set; }
            public string Name { get; set; }

            public static Person Named(string name)
            {
                Person p = new Person(name);
                return p;
            }

            protected Person(string name)
            {
                Name = name;
            }
        }

        public class Animal : IDateOfBirth
        {
            public enum KindOf
            {
                Dog,
                Cat
            }

            public DateTime DateOfBirth { get; set; }
            public string Name { get; set; }
            public KindOf KindOfAnimal { get; set; }

            public static Animal Named(string name)
            {
                Animal animal = new Animal();
                animal.Name = name;
                return animal;
            }
            public Animal AndItIsA(KindOf kind)
            {
                KindOfAnimal = kind;
                return this;
            }
        }


        public static class DateOfBirthExtensions
        {
            public static T BornOn<T>(this T p, Day day) where T : IDateOfBirth
            {
                p.DateOfBirth = new DateTime(p.DateOfBirth.Year, p.DateOfBirth.Month, (int)day);
                return p;
            }

            public static T Of<T>(this T p, Month month)  where T : IDateOfBirth
            {
                p.DateOfBirth = new DateTime(p.DateOfBirth.Year, (int)month, p.DateOfBirth.Day);
                return p;
            }

            public static T InTheYear<T>(this T p, int year)  where T : IDateOfBirth
            {
                p.DateOfBirth = new DateTime(year, p.DateOfBirth.Month, p.DateOfBirth.Day);
                return p;
            }
        }

    }

    Friday, January 11, 2008 7:55:53 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    C#

    Inspired by Pinku Surana's blog about DSL's and after reading the presentation from Neal Ford I felt compelled to experiment with a little DSL style programming.

    My goal was to get as close as possible to something like:

    Person mark = Person.Named("Mark").BornOn(theTwentyFifth).Of(September).InTheYear(1972);

    As it turns out the linking of methods is pretty easy. Where you might be inclined to create a property, just create a method which returns the base object, in this case Person.
    The hardest part I found was trying to come up with something decent for 'theTwentyFifth' and 'September'. My first try was to create enumerations, but then you have to name the enum and you get something like:

    Person mark = Person.Named("Mark").BornOn(Day.theTwentyFifth).Of(Month.September).InTheYear(1972);

    Which is good because the intellisense in C# is great, but having to prefix it messes it up just a little. An Alternative implementation is to 'abuse' generics and do it like this:

    Person mark = Person.Named("Mark").BornOn<theTwentyFifth>().Of<September>().InTheYear(1972);

    The draw back to this is that intellisense is less useful and it is messy to be using generics for BornOn and Of, but not for InTheYear.
    The implementation is below. I'm still thinking about which solution is more useful.


    namespace DSL
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person mark = Person.Named("Mark").BornOn<theTwentyFifth>().Of<September>().InTheYear(1972);
            }
        }

        public abstract class CalenderMonth
        {
            public int Month { get; private set; }

            protected CalenderMonth(int month)
            {
                Month = month;
            }
        }

        public class September : CalenderMonth
        {
            public September()
                : base(9)
            {
            }
        }


        public abstract class DayOfMonth
        {
            public int Day { get; private set; }

            protected DayOfMonth(int day)
            {
                Day = day;
            }
        }

        public class theTwentyFifth : DayOfMonth
        {
            public theTwentyFifth()
                : base(25)
            {
            }
        }

        public class Person
        {
            DateTime _dob = new DateTime();
            string _name;


            public const int theFirst = 1;
            public const int theTwentyFifth = 25;

            public static Person Named(string name)
            {
                Person p = new Person(name);
                return p;
            }

            protected Person(string name)
            {
                _name = name;
            }

            public Person BornOn<T>() where T : DayOfMonth, new()
            {
                T d = new T();
                _dob = new DateTime(_dob.Year, _dob.Month, d.Day);
                return this;
            }

            public Person Of<T>() where T : CalenderMonth, new()
            {
                T m = new T();
                _dob = new DateTime(_dob.Year, m.Month, _dob.Day);
                return this;
            }

            public Person InTheYear(int year)
            {
                _dob = new DateTime(year, _dob.Month, _dob.Day);
                return this;
            }
        }

    }

     

    Friday, January 11, 2008 7:24:33 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    C#

    If you want to dynamically want to load a form and you only know the classname then the following snippet may be of use:

    Type t = Type.GetType("ConsoleApplication1.Form1");
    if (t != null)
    {
        System.Windows.Forms.Form f = (System.Windows.Forms.Form) Activator.CreateInstance(t);
        f.ShowDialog();
    }

    Now, if you'd want to load the form from a different assembly, let's say, some library assembly with forms, then you need to specifiy an AssemblyQualifiedName.

    Like:

    Type t = Type.GetType("ClassLibrary1.Form1, ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
    if (t != null)
    {
        System.Windows.Forms.Form f = (System.Windows.Forms.Form)Activator.CreateInstance(t);
        f.ShowDialog();
    }

    This will dynamically load the form and show it. So no compiletime binding needs to be done.

     

    Friday, January 11, 2008 10:33:31 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    C#

    The other day I was playing around with WPF in Visual Studio 2008 and I stumbled across some strange behaviour. I made a mistake in the XAML of a WFP Window.

    <Button Background="LightBlueX" Name="button1" Click="button1_Click">Click here</Button>

    As you can see the name of the Background color is not valid. Now as long as you have the Window opened in the designer the errorlist will display an error to inform you about the mistake. However, if you try and compile your project, you'll find that the compiler will succesfully build. Then when you run the application you'll get a runtime error (a XAML parse exception). Thinking this to be an error in the compiler I logged a bug on MSConnect.

    I received the following feedback:

    Hi Mark

    Thanks for your report. The behavior you're reporting is actually by-design - it arises because of a trade off of complexity/performance in the build/compilation process vs surfacing all possible failures at compile time.

    Errors in XAML attribute values like the one mentioned in the bug are one of the class of errors that can't be picked up with certainty by the build process without loading the entire context of the WPF application being built - this is too heavy an overhead to impose on the compilation process and would cause a major performance degradation in building.

    The expected process is that the user will use the designer (which of necessity loads a lot more of the context) to locate and eliminate errors of this sort. Hence the fact that the errors list shows the error as described in the repro steps.

    Thanks for taking the time to submit the issue - I hope you continue to find the designer useful and would welcome any further feedback you have.

    Mark Wilson-Thomas
    Program Manager
    WPF Designer Team, Developer Division

    Ok, that clarifies things. I'll get into the habit of checking my errorlist before saving a XAML file.

    Friday, January 11, 2008 7:16:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [3] -
    WPF

    Maine is getting another .NET User Group and this one is actually close to where I live,yeah!!!

    The B.A.N.D. (Bangor Area .NET Developers) will meet monthly. More info at: http://www.bangordevelopers.com.

    Friday, January 11, 2008 6:54:15 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    General
     Thursday, January 10, 2008

    I'm beginning to appreciate the power of extension methods. At first I thought: "Who wants this?". Doesn't this 'break' the encapsulation of object oriented programming?

    Well yes it does, but it makes for some darn pretty code when building utility methods. Right now I'm working on some stuff with the DataContractJsonSerializer and this class has a ReadObject method which takes a stream as a parameter. When writing unit test (and regular code) I'm quite frequently going from a string to a stream. So I figured I'd create an extension method called ToMemoryStream(). This is what is looks like:

    using System;
    using System.IO;

    namespace DevelopOne.Framework.Serialization
    {
        /// <summary>
        /// Class with extension methods which are helpful when working
        /// with serialization.
        /// </summary>
        public static class Extensions
        {
            /// <summary>
            /// Converts a string to a memory stream and sets the position of the stream to
            /// the beginning of the stream.
            /// </summary>
            /// <param name="s"></param>
            /// <returns></returns>
            public static MemoryStream ToMemoryStream(this string s)
            {
                MemoryStream ms = new MemoryStream();
                byte[] bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(s);
                ms.Write(bytes, 0, bytes.Length);
                ms.Position = 0;
                return ms;
            }
        }
    }

    Now calling this method can be done by simply including the namespace DevelopOne.Framework.Serialization and calling ToMemoryStream() on a string.

    Like this:

    string json = "{\"exceptions\":[{\"type\":\"ExceptionObject\",\"errorMessage\":\"Calls to member.login must be secure.\",\"errorInfo\":null,\"errorCode\":513}]}";
    MemoryStream ms = json.ToMemoryStream();

     

     



    The best web hosting service is the one that not only provides cheap web hosting, but comes with perks like email hosting as well. This and the added benefits of hosting more than one domain names of course adds to the entire package. Thanks to the extensive promotion of online marketing, now anyone with access to computers knows of this. This has contributed effectively to the popularity of home business setups as well.

    Thursday, January 10, 2008 8:09:58 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    C#
     Tuesday, January 08, 2008
    Tuesday, January 08, 2008 12:02:51 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
    General
    About
    This blog is run by Mark Blomsma.
    © Copyright 2008
    Develop-One
    Sign In
    Statistics
    Total Posts: 320
    This Year: 64
    This Month: 2
    This Week: 0
    Comments: 76
    All Content © 2008, Develop-One
    DasBlog theme 'Business' created by Christoph De Baene (delarou)