I’ve a 64bit machine that has a web-service hosted under IIS6!. This starts throwing out errors one morning as I browse to my .svc location – “Page not found 404 Error


  1. Check that the isapi.dll is pointing to v2.0
    C:\WINDOWS\microsoft.net\Framework\v2.0.50727\It appears that an overnight .NET 4 installation was pushed out and IIS 6 extensions were mapped to .NET v4. To resolve this, I manually changed the .svc extension in IIS 6 to v2.0+.
    Screen shot of my machine (under IIS –> Default Web Site –> MySite.WCF)  before I made the change
    After the change:
    Now pointing to : C:\WINDOWS\microsoft.net\Framework\v2.0.50727\aspnet_isapi.dll

    Make sure to restart IIS

  2. Make sure your IIS service account has access to the C:\windows\temp folder. Your WCF service generates temporary files behind the scene and skipping this might display errors such as: System.InvalidOperationException: Unable to generate a temporary class
  3. From your command prompt run the following command
    aspnet_regiis.exe -i –enable     
  4. Then (command prompt again),
                   cd C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation
                   ServiceModelReg.exe -i
  5. If it still doesn’t solve it, follow this MSDN article
    Location: http://msdn.microsoft.com/en-us/library/ms752252(VS.90).aspx
    Happy setting up 🙂

Alot has been said about the request response scenario in BizTalk. I’m afraid this topic is still in confusion amongst BizTalk developers in general, and while understanding the capabilities of BizTalk’s ESB toolkit.

The ESB toolkit 2.0/2.1 allows sending message to destination system and correlating a response on it. This is acheived by the Enterprise application block (Caching) behind the scenes. The itinerary header for the initial send is cached, and respective correlation information (TransmitID) is stored in the Application block. Upon receiving response, it is correlated on the same token, the itinerary header is retreived from the Cache manager and then attached to the message.

I’ve elaborated the whole working with two pictures. They carry a a lot of detail – but worth the effort!

Happy coding 🙂

I must admit advocating against the BizTalk ESB at times. However, this one feature called the Itinerary Broker Service is pure brilliance.

In short, consider this as a decide shape in workflow. The itinerary look at a certain value (in the context), and decides on the path – just like a decide shape in a workflow. For Itineraries this step is called the Broker Service. Based on a certain value (in the context), the respective itinerary step is chosen.

Elaboration (Itinerary Steps). Consider an itinerary with the following steps:
1. Broker.MessagingBroker
2. Routing (to send port rXYZ)
3. Routing (to send port rABC)

Here we want Step 1 (MessagingBroker) to evaluate a value on the context of the message. If true, execute step 2 – else execute step 3.

Provided two incoming message types (type1 and type2) are pushed into the ESB. If MessageType = type1, then ==> follow step 2, else follow step 3.

That’s all on the broker service. Remember that this works on the messaging level. Read more about this on the following MSDN link

Link: http://social.msdn.microsoft.com/forums/en-us/biztalkesb/thread/5516AFBA-336C-45FF-B1DA-B97EF2EFDB54

Further Info (By Nick Hauenstein): Click here

Sample (By Nick Hauenstein): Click here

Happy designing 🙂

This post describes debugging on parallel BizTalk components (as in threads) running in VS 2010. With my current application, I submitted a message that would be routed to multiple locations. Before being routed, the file was being archived to a disk location (on the send component).

While debugging, the editor would switch between threads (as expected). I setup a breakpoint on the Archive Component, and the data-layer. In order to focus my debugging on the Archive component, I wanted to pause all other interfering threads.

To view the running thread in VS 2010 IDE, open the threads window, and select your process (appears under BizTalk Server 2010), right click and hit pause

Interestingly, if I open up the Parallel tasks window during debugging I get a diagram of all my tasks 🙂

This shows me two parallel tasks 1. ArchiveMessage… 2. Helper.Advance

Right click on Show External Code on the Parallel tasks (diagram above),

… And this would display a complete (stack) trace on how the call originated

Happy debugging 🙂

Here is a handy command to clear all tables on your (local) database.

  1. Select the Database in SQL Server Management Studio, and hit New Query
  2. Run the following command
EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

That is good for dropping all tables. Most of the time, you’d like to delete all table data. Also, to overcome tables associations on constraints/keys, etc. Use the following in this case:

EXEC sp_MSForEachTable 'DELETE FROM ?'

Note: You cannot use  TRUNCATE with above syntax!

Happy coding 🙂

What constitutes a Guid?

Guid.NewGuid is always unique. MSDN describes it as containing several sections for a given number – like the timestamp, clock sequence and node. As the example, generating the GUID 8743428c-ef914d059e7c4a2e856e813a
consists of the following sections:

8743428c– Low field of the timestamp
ef91 – Middle field of the timestamp
4d05 – High field of the timestamp with multiplexed version number
9e – High field of the clock sequence with multiplexed variant type
7c – Low field of the clock sequence
4a2e856e813a – Spatially unique node identifier

For more info: Click here

Just for info 🙂

This is a handy snippet to remove namespaces from an xml document.

XmlDocument xmlDocument = new XmlDocument();
string xmlText = xmlDocument.OuterXml;
xmlText = System.Text.RegularExpressions.Regex.Replace(
              xmlText, @"(xmlns:?[^=]*=[""][^""]*[""])", "",
              System.Text.RegularExpressions.RegexOptions.IgnoreCase |

Happy coding 🙂