Thursday, September 29

ESB errors: simple jargon-free problem and solution approach

The BizTalk ESB toolkit is a pleasure to use when it works just right, however, getting it to that point is one of the biggest headaches due to it's interconneciton of artifacts and rules... I just thought I'd make a growing journal of errors I encountered in my ESB implementations over the years. Hope these will help someone out there at some point...

P: You get Http 503. Service unavailable error when you try to open the ESB portal
S: Your web server is experiencing issues. Most likely the service is down or your apppools are not properly running. Check your Application Pools, make sure the Application Pool for ESB is started (usually ESBPortalNetworkAppPool). Open command prompt and restart IIs by typing iisreset <Enter>. Then try browsing to the ESB Portal again

P: When trying to access the ESB home page http://localhost/esb.portal/ you get an error saying there is an unhandled exception. In the error log the exception looks something like this:

Event code: 3008
Event message: A configuration error has occurred.
Event time: 22/02/2011 08:14:13
Event time (UTC): 22/02/2011 08:14:13
Event ID: 6e985cae3c3349a091823d65edf78b6a
Event sequence: 1
Event occurrence: 1
Event detail code: 0

Application information:
    Application domain: /LM/W3SVC/1/ROOT/ESB.BizTalkOperationsService-8-129428360532405064
    Trust level: Full
    Application Virtual Path: /ESB.BizTalkOperationsService
    Application Path: C:\Program Files (x86)\Microsoft BizTalk ESB Toolkit 2.1\Web\ESB.BizTalkOperationsService\
    Machine name: DEVBIZ102

Process information:
    Process ID: 24196
    Process name: w3wp.exe
    Account name: NT AUTHORITY\NETWORK SERVICE

Exception information:
    Exception type: ConfigurationErrorsException
    Exception message: Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
   at System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, XmlNode node, Boolean checkAptcaBit, Boolean ignoreCase)
   at System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, Boolean checkAptcaBit)
   at System.Web.Configuration.Common.ModulesEntry.SecureGetType(String typeName, String propertyName, ConfigurationElement configElement)
   at System.Web.Configuration.Common.ModulesEntry..ctor(String name, String typeName, String propertyName, ConfigurationElement configElement)
   at System.Web.HttpApplication.BuildIntegratedModuleCollection(List`1 moduleList)
   at System.Web.HttpApplication.GetModuleCollection(IntPtr appContex

S: Run this command at the command prompt

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe –iru

If this still haent resolved the issue, make sure to re-allocate the ESBPortalNetworlAppPool is still using the v2.0 .Net Framework (Open IIS, Click on Application Pools  -àESBPortalNetworkAppPool à Right-Click àAdvanced Settings à .Net FrameWork Version
P: When trying to use an Itinerary published using the Database Exporter Model in BizTalk ESB, you get the error: “The Itinerary “<ItineraryName> was not found in the repository”
S: Two possible solutions
a)      You forgot to set the Fact Key in the On-Ramp (Receive Port) Receive Location’s Receive Pipeline. Open up the Pipeline properties and set the Itinerary FactKey to Resolver.Itinerary
b)      You actually forgot to export your Itinerary (d-uh)
c)       You forgot to set your itinerary to deploy before exporting if from the itinerary designer. Go to SQLServer (using SQLServer Management Studio), open Databases à ESBItineraryDb à dbo.Itinerary à Edit Top 200 Rows. Find the row corresponding to your Itinerary (where the column strName is the name of the Itinerary). Check if the column nStatus of is 0 (it needs to be 1). If it is 0, go back to Itinerary designer, open the Itinerary and click on the Itinerary designer surface. In the Properties Window, set Itinerary Status to Deployed and export the Itinerary again

P: When exporting your Itinerary to the Database, you get the error 'A X509 Certificate is required in the model property ‘EncryptionCertificate’ to encrypt any sensitive property in the designer'

S:
a) For BizTalk 2006/2009 with Toolkit 2.0 - In the Registry Editor, navigate to the subkey HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BizTalk ESB Toolkit\2.0\Designer, and then set the RequireX509Certificate property value to false. (If you're using a 64-bit machine, use HKEY_LOCAL_MACHINE\SOFTWARE\Syswow64\Microsoft\BizTalk ESB Toolkit\2.0\Designer)

b) For BizTalk 2010 with Toolkit 2.1 - You actually only need to set the Require Encryption Certificate value in the Itinerary Properties to false. If you also wish to change the registry keys, in the Registry Editor, navigate to the subkey HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BizTalk ESB Toolkit\2.1\Designer, and then set the RequireX509Certificate property value to false. (If you're using a 64-bit machine, use HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\BizTalk ESB Toolkit\2.1\Designer)

No comments:

Post a Comment