Welcome to MSDN Blogs Sign in | Join | Help
Outlook 2010: Cannot open you default e-mail folders.. MAPI was unable to load the information service msncon.dll.

Downloaded the Office 2010 Beta? Cool.. Outlook 2010 is awesome (and so is OneNote 2010, try it). Here's a very easy fix for the following Outlook2010 startup message:

  "Cannot open you default e-mail folders. An unexpected error has occured. 

 MAPI was unable to load the information service msncon.dll. Be sure the service is correctly installed and configured."

 

Steps:

·         Close Outlook2010

·         Goto Control Panel > Add or Remove Programs

·         Uninstall your old Outlook Connector for Hotmail/Live mail > Restart

·         Get the new connector (version 14.0.4514.1004) from the links below:

·         Open Outlook2010 again, no restart required.

 

32 bit: http://download.microsoft.com/download/D/F/8/DF8DC3A7-CF01-4F22-B965-DD8CD86411ED/OutlookConnector.exe
64 bit:
http://download.microsoft.com/download/8/F/2/8F2D0D4D-719B-4BD3-90BC-56B7AF48C419/OutlookConnector.exe

I noticed that some posts out there have download links to Version 12 of the connector, which is not compatible with Outlook2010. Use the links above and it will work like a charm J

Enjoy Office2010! . . .Need more help? See here

 

 

WorkflowChanges: Reusing the modified XOML workflow template

Please Note: This post is specific to .Net Framework 3.5 and VS2008

 

In this scenario we have an existing WF workflow instance that we will change using the WorkflowChanges class. Our objective would to be to retain these changes (using XOML) and use this new WF activity structure to create new WorkflowInstance(s).

 

So, let’s look at the code. For easy understanding we will break this up into 5 simple steps.

1.      Create a XOML only workflow as a starting point. This would have an associated assembly containing the functionality that we will load later.

2.      Host the WF runtime in a console app and create a workflow instance.

3.      Make changes to the workflow instance

4.      Store the new (modified) workflow template

5.      and finally, create new instances from this new template

 

Step1: Create a XOML only workflow

a) Create a Class Library project and create your own type that derives from SequenceActivity and add the required code beside elements and compile it. Refer to WorkflowProject1 in the attached code.

 

Note: make sure that the code handlers are public otherwise you won’t be able to bind to it from your markup (XOML workflow).

 

namespace WorkflowProject1

{

 

    public partial class Activity1 : System.Workflow.Activities.SequenceActivity{

 

    public void codeActivity1_ExecuteCode(object sender, EventArgs e)

    {

        Console.WriteLine("Executing Code Activity1");

    }

 

    public void codeActivity2_ExecuteCode(object sender, EventArgs e)

    {

        Console.WriteLine("Executing Code Activity2");

    }

 

}

}

 

b) Create a XOML only workflow (TextFile1.xoml) as shown below. Note that the type created above is the root activity in this case and refers to the assembly created above. Also note that we have only two CodeActivities in this template.

 

<ns0:Activity1 x:Name="Activity12" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:ns0="clr-namespace:WorkflowProject1;Assembly=WorkflowProject1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">

  <CodeActivity x:Name="codeActivity1" ExecuteCode="{ActivityBind Name=Activity12, Path=codeActivity1_ExecuteCode}" />

  <CodeActivity x:Name="codeActivity2" ExecuteCode="{ActivityBind Name=Activity12, Path=codeActivity2_ExecuteCode}" />

</ns0:Activity1>

 

 

Step2: Host the WF runtime in a console app and create a workflow instance

Create a Console app (ConsoleHostApplication1) and add the WorkflowProject1 assembly as a reference.

Before we can create an instance of the above XOML workflow, we need to tell the WorkflowRuntime where to find the associated functionality (for the activities being used). For this we need to add a TypeProvider runtime service. Add the following to the Program.cs (you would need some more WF hosting code that you would find in the attached code sample)

 

Note: We do not need the TypeProvider if the assembly is deployed to GAC.

 

WorkflowRuntime workflowRuntime = new WorkflowRuntime();

 

// Add the Assembly that contains the codebehind

// to a TypeProvider and register the TypeProvider with

// the WorkflowRuntime.

TypeProvider t = new TypeProvider(workflowRuntime);

t.AddAssembly(typeof(WorkflowProject1.Activity1).Assembly);

workflowRuntime.AddService(t);

 

//run XOML workflow

XmlTextReader reader = new XmlTextReader(@"TextFile1.xoml");

WorkflowInstance instance = workflowRuntime.CreateWorkflow(reader);

instance.Start();

 

Related reading for Step 2:

Loading Workflow Models in WF

Using Workflow Markup

Using Rules with Workflow Markup

Using Custom Activities with Workflow Markup

 

 

Step3: Make changes to the workflow instance

We do this with the help of the WorkflowChanges class in Framework. This lets us create a transient workflow and make changes to it. Read more about it in the “Related reading” section for this step.

In our case we add another CodeActivity to the existing activity tree.

** You may want to provide a designer for editing the XOML. Please find related resources/sample code at the end of this post.

 

 //Suspend before changing

 instance.Suspend("Changing");

                

 //making changes

 WorkflowChanges changes = new WorkflowChanges(instance.GetWorkflowDefinition());

 changes.TransientWorkflow.Activities.Add(new CodeActivity("codeActivity3"));

 ActivityBind bind = new ActivityBind("Activity12", "codeActivity2_ExecuteCode");

 changes.TransientWorkflow.Activities["codeActivity3"].SetBinding(CodeActivity.ExecuteCodeEvent, bind);

 instance.ApplyWorkflowChanges(changes);

 

Related reading for Step 3:

Workflow Changes Overview

Workflow Changes to Rule Conditions

Using Workflow Changes in Workflows

How to: Apply Workflow Changes to Workflows

Dynamic Update from Host - Sample

Changing Rules - Sample

 

 

Step4: Store the modified template for future use

Note that we had suspended the workflow instance in step3. We take the structure of this paused (and now modified) workflow instance and store it in memory. Later we show it on the Console as output. You can just as well add some simple code to store this in a database table and even associate some version numbers to these templates. The key to this step is the WorkflowMarkupSerializer. Read more about it in the “Related reading” section for this step

 

//get the new workflow template/blueprint, optionally save it to a database with new version number for the template

WorkflowMarkupSerializer serializer = new WorkflowMarkupSerializer();

StringBuilder sb = new StringBuilder();

XmlWriter xwriter = XmlTextWriter.Create(sb);

serializer.Serialize(xwriter, instance.GetWorkflowDefinition());

Console.ForegroundColor = ConsoleColor.Cyan;

Console.WriteLine(sb.ToString() + "\n"); //show modified workflow template, notice the additional Code activity in the console output

Console.ForegroundColor = ConsoleColor.White;

 

//or write it to a file so that we can use it later

XmlWriter xwriter2 = XmlTextWriter.Create(@"C:\NewWorkflowTemplate.xoml");

serializer.Serialize(xwriter2, instance.GetWorkflowDefinition()); 

 

//resume the original workflow instance

instance.Resume();

 

Now let’s RUN the console app to see the changed workflow structure. Notice the additional CodeActivity that we added dynamically “codeActivity3” and the third CodeActivity output (highlighted).

 

Output_step4 

 

Related reading for Step 4:

Serialization Overview

How to: Serialize Workflows

Serializing Custom Activities

Workflow Serialization Sample

 

 

Step5: Create new workflow instances from the new template

Create another Console app (ConsoleHostApplication2) and add the WorkflowProject1 assembly as a reference. Here we write the usual WF hosting code (see attached code sample for specifics).

As before we create a TypeProvider to associate the assembly, and then use the XMLReader overload of the WorkflowRuntime.CreateWorkflow() method to create an instance for the new workflow blueprint.

 

TypeProvider t = new TypeProvider(workflowRuntime);

t.AddAssembly(typeof(WorkflowProject1.Activity1).Assembly);

workflowRuntime.AddService(t);

 

//run XOML workflow

XmlTextReader reader = new XmlTextReader(@"C:\NewWorkflowTemplate.xoml");

WorkflowInstance instance = workflowRuntime.CreateWorkflow(reader);

instance.Start();

 

Upon running this console app, you would see that there is a third CodeActivity output (highlighted), whereas the original workflow template from Step 1b had only two CodeActivities.

 

Output_step5

 

 

Download Code

 

XOML Workflow designer re-hosting resources:

Viewing/Editing Workflow's in XML (WF Beta1 codebase) **

WFPad for Windows Workflow Foundation Beta 2 (with code) **

and also..

WF Scenarios Guidance: Workflow Designer Re-Hosting

Windows Workflow Foundation: Everything about Re-Hosting the Workflow Designer

 

 

                               

.Net Framework 3.5 compatibility

Here are some good posts on .Net 3.5 enhancements (dlls) and compatibility with previous versions of the Framework.

Read about the Visual Studio 2008 Evolution

.Net Framework 3.5 - Red and Green Bits - the additive changes, 3.5 should not break your application unless your code is based on some bug that has now been fixed. CLR v.2.0 stays the same though, see here.

Jason Zander wrote a blog on Framework compatibility in the VS 2005 context (in case you are interested)

 

WCF Error: HTTP could not register URL http://+:8000/... Your process does not have access rights to this namespace

 

While working with WCF services over HTTP you may come across this error:

HTTP could not register URL http://+:8000/OrderManagerService/. Your process does not have access rights to this namespace.

 

Using WCF over HTTP either requires the use of a host (like IIS), or a manual configuration of HTTP Settings. In this case it really easy to do. The tool is different for different OS though.

 

Windows Server 2003/Windows XP - use the HttpCfg.exe tool

 

Windows Vista/Windows Server 2008 - configure these settings with the Netsh.exe tool (you need to deal with UAC here). The steps are mentioned below:

1. Go to Start > Accessories > Command Prompt > Right-Click (Run as Administrator)

2. Execute this at the command prompt:

    netsh http add urlacl url=http://+:8000/OrderManagerService user=DOMAIN\username

    8000 here is your port number, you can replace this with a port number of  your choice (using which your WCF service is hosted)

 

You should get a message saying “URL reservation successfully added

 

What you just did is to configure a Namespace registration. Namespace reservation assigns the rights for a portion of the HTTP URL namespace to a particular group of users. A reservation gives those users the right to create services that listen on that portion of the namespace. You will find more information here. There are other useful information on this page like Configuring SSL Certificates etc.

 

I would also recommend this related post.

Windows Communication Foundation 101

 

Windows Communication Foundation (WCF) is Microsoft’s unified programming model for building service-oriented applications. It enables developers to build secure, reliable, transacted solutions that integrate across platforms and interoperate with existing investments. So you can expose a service over multiple channels, each of which can be configured to take advantage of select protocols like WS-Security, WS-Trust or WS-SecureConversation for secure message exchanges; WS-ReliableMessaging for reliable transfer of messages etc. You can also choose what transport protocol you want to use for communication (eg: HTTP, TCP, MSMQ, Named Pipes, custom) and the encoding format (XML, Binary, MTOM).

 

WCF is able to support interoperability as it’s native messaging protocol is SOAP (an open standard) thus providing the opportunity for WCF services to interact with different technologies running on Microsoft and non-Microsoft platforms. It also works with its predecessors like COM+ and Enterprise Services which reduces the amount of infrastructure code that you have to write as a developer in order to achieve heterogeneous interoperability. Here is a performance article you can go through.

 

Some resources to get started:

 

WCF Community Website

 

Windows Communication on MSDN

 

Understanding Windows Communication Foundation Virtual Lab

 

 

Books

 

Learning WCF: A Hands-on Guide

 

Inside Windows® Communication Foundation

 

Programming WCF Services by Juval Lowy (Author)

 

Windows Communication Foundation Unleashed

.Net 3.5 Enhancements Training Kit Released

Great news everyone, the first version of the .NET 3.5 Enhancements Training Kit has been released!

 

These training kits provide a way for developers to grasp the breadth of the entire release, as well as dive deep into a specific technology. The .NET 3.5 Enhancements Training Kit covers the technologies in the .NET 3.5 SP1 release and beyond (ASP.NET MVC and the ASP.NET Silverlight controls). Currently, the training kit contains six hands-on labs, made up of the following technologies:

 

1)      ADO.NET Data Services

2)      ADO.NET Entity Framework

3)      ASP.NET AJAX History

4)      ASP.NET Dynamic Data

5)      ASP.NET MVC

6)      ASP.NET Silverlight controls

 

You can download the training kit at http://go.microsoft.com/?linkid=8719735

 

Happy Learning!!

.NET Framework 3.5 Namespace Poster

Here it is, now available in different formats and explains really well the additive version releases of the Framework leading upto .Net 3.5

Framework 3.5 poster

Download Links:

Full XPS
Split XPS
PDF
Tiled PDF

Enjoy!!

Getting Virtual Server 2005 to work on Windows Vista

Recently I tried running Virtual Server 2005 R2 on Vista Ultimate edition, the program installed ok but I was unable to start the Virtual Server Administration site. It prompted me Open or Save vswebapp.exe

In order to fix the same you need to do the following:

·       Add IIS features on an existing Windows Vista OS

·       Add an IIS handler mapping so it will treat EXE files as CGI

 Add IIS features on an existing Windows Vista OS:

IIS is not installed by default when installing Windows Vista, so in most cases you will need to add several IIS features before being able to install Virtual Server 2005 on Windows Vista.   I used the following steps to add IIS to my Windows Vista system that is running the Ultimate edition:

1.     Go to the Programs and Features control panel.  I typically do this by pressing the Windows key + R and typing appwiz.cpl in the run dialog

2.     Click the Turn Windows features on or off link in the Tasks list on the left side of the Programs and Features control panel, and click Continue to launch with administrator privileges

3.     In the Windows Features dialog, locate the item named Internet Information Services in the feature tree.  Check the root node to enable the default set of IIS features

4.     Expand the root node and check the following child nodes that do not end up getting checked by default (this is the list of items that I checked, but I don't know for sure if all of them are necessary in order to use Virtual Server 2005):  all of the IIS 6 management tools under the Web Management Tools node, all of the features in the Application Development Features, Common Http Features and Security nodes under the World Wide Web Services node

5.     Click OK to add all of the IIS features that you selected in the previous 2 steps

6.     Reboot after IIS feature installation completes

 Add an IIS handler mapping so it will treat EXE files as CGI:

After adding IIS features to your Windows Vista system and installing Virtual Server 2005, you will need to configure a new handler mapping for the VirtualServer web site.  To do this, I used the following steps (there may be other ways of doing this, but this is the way I found that worked for me):

1.     Go to the Windows start menu, choose All Programs, then Administrative Tools, then Internet Information Services (IIS) Manager

2.     Click Continue to launch the IIS Manager application with administrator privileges

3.     In the Connections tree control on the left side of the IIS Manager UI, expand Web Sites, then expand Default Web Site, find the VirtualServer web site and click on it

4.     In the main pane, you should see /VirtualServer Home.  Select Group by area if it is not currently selected in the Group by drop down.  Then find the IIS settings section and double-click on the item named Handler Mappings

5.     In the Handler Mappings pane, right-click and select Add Module Mapping...

6.     In the Request path text box, enter *.exe

7.     In the Module drop-down, select CgiModule.  If you do not see CgiModule listed in this drop-down, you will need to go back to the control panel and make sure that you add the CGI feature to IIS (located under Internet Information Services | World Wide Web Services | Application Development Features | CGI in the Windows Features control panel), then try these steps again

8.     In the Name text box, provide a friendly name for the module mapping.  I used EXE-to-CGI, but it doesn't matter what you type here

9.     Click OK to add the module mapping to the VirtualServer web site

10.   In the Connections tree control on the left side of the IIS Manager UI, expand Web Sites, then right-click on the Default Web Site and choose Restart to make sure that the changes made above will take effect

These steps were enough for the issue I was facing. These were originally provided by Aaron Stebner here. Please refer to this post in if you require additional help.

Microsoft Surface

Just had to blog about this :) surface technology from Microsoft it's AWESOME!!

The launch of Microsoft Surface marks the beginning of a new technology category and a user-interface revolution. Surface, Microsoft’s first surface computer, provides effortless interaction with digital content through natural hand gestures, touch and physical objects. Surface computing breaks down traditional barriers between people and technology, changing the way people interact with all kinds of everyday information — from photos to maps to menus.

Read about it here.

image

Hotfix for Persistence Problem in WF and in SharePoint

If you are using the persistence service in Windows Workflow Foundation (WF) you may experience failures in the Delay activity to fire it's completed event. This can be worked around in WF but not in SharePoint workflows. We now have KB932816 article describing the problem and how to obtain a fix from Microsoft.

This fix applies to workflow in Windows Workflow Foundation and also in Windows SharePoint Services 3.0 and in Microsoft Office SharePoint Server 2007.

 Here is the original post. Paul is a GREAT resource for WF. Thanks Paul!

Microsoft adCenter

What is Microsoft adCenter?

Microsoft adCenter, is a newly launched Pay-Per-Click (PPC) service with the best-converting PPC audiences on the web.

Powered by the sophisticated Microsoft Live Search engine, searching online becomes more natural, accessible and innovative. resulting in a larger target audience.

You can create you own ad Campaigns and manage them. Use the new performance filter feature to view performance data for your campaigns, orders, ads, and keywords.

Catch the adCenter demos here!! also see adCenter FAQs.

Video Hyperlink - http://adlab.microsoft.com/vhl/

 MSN Entertainment shows of Kohl’s department store using the Video HyperLink Technology, which is an interactive video tool which provides more information about objects in a video when you click or even hover on them.

For example, you might want details about a product you see in the video. So as the video plays, you can move the mouse over the product to see where more information is available. Then, you can click the summary information to go to a merchandize website for details.

Check out Kohls department store Video HyperLink at:

http://entertainment.msn.com/videohyperlink/kohls 

BPEL for Windows Workflow Foundation

Check out Paul Andrew's latest post on BPEL for Windows Workflow Foundation

Paul is a Windows Workflow Foundation Technical Product Manager at Microsoft

Paul Andrew on BPEL for Windows Workflow Foundation March CTP

BPEL for Windows Workflow Foundation March Community Technology Preview RELEASED!!

Windows Workflow Foundation 101

Windows Workflow Foundation (WF) is the programming model, engine and tools for quickly building workflow enabled applications. WF radically enhances a developer’s ability to model and support business processes. You can go to the extent of hosting a workflow designer in your own application, thereby enabling non-developers to make changes whenever necessary. Here are some resources to get started:

WF Community Website

MSDN: Windows Workflow Foundation

Get Started: Install Framework 3.0 and WF extensions for VS2005

 

Books

Microsoft Windows Workflow Foundation Step by Step

Presenting Windows Workflow Foundation

Essential Windows Workflow Foundation 

Foundations of WF

Programming Windows Workflow Foundation

Pro WF: Windows Workflow in .NET 3.0

Page view tracker