Skip to main content

Thinking out aloud - Dave Hunter's SharePoint Blog

Go Search
Home
Blog
  

Locations of visitors to this page


 Useful Links

  Microsoft UK events
  SharePoint 2007 on CodePlex
  SharePoint Community Portal
  SharePoint User Group
  SharePoint Community Portal
  SharePoint Pedia
  SharePoint MSDN Forums
  SharePoint University

 Other Blogs

  Andrew Connell
  Angus Logan
  Arpan Shah
  Bill English
  Charles Emes
  Chris Hines
  From the field
  Heather Solomon
  Joel Oleson
  Lawrence Liu
  Mark Harrison
  MCS UK SharePoint Team
  Microsoft ECM
  Nick Mayhew
  Patrick Tisseghem
  Penny Coventry
  SharePoint Team
  Stefan Gossner
  Todd Bleeker
Home > Thinking out aloud - Dave Hunter's SharePoint Blog
My thoughts and findings on Microsoft Information worker technologies, including MCMS and SharePoint 2007 (MOSS).
Find out the SharePoint Internal Name for a Column or Site Column

When you create a column on a list or site column in SharePoint through the user interface you enter the column name, type and any other properties.  The name is used for the internal name and display name.  The internal name is escaped to remove any special characters and spaces.  The table below displays the list of characters and their escaped version.

Character

Hex Code

Escaped Version

[space]

20

_X0020_

|

7C

_X007C_

-

2D

_X002D_

\

5C

_X005C_

(

28

_X0028_

)

29

_X0029_

'

27

_X0027_

,

2C

_X002C_

!

21

_X0021_

%

25

_X0025_

&

26

_X0026_

?

3F

_X003F_

$

24

_X0024_

£

A3

_X00A3_

"

22

_X0022_

<

3C

_X003C_

>

3E

_X003E_

=

3D

_X003D_

#

23

_X0023_

 

The following are examples of this escaping:

Name entered

Escaped Version

Published Date Published_X0020_Date
Buyer's Name Buyer_X0027_s_X0020_Name
Zip / Postal Code Zip_X0020__X002F__X0020_Postal_X0020_Code

 

Please note: The internal name has a maximum length which is calculated after the internal name has been escaped.

There are a few way's to check the internal name, one of which is the through the User Interface, here's how:

1.  Open a web browser.

2.  If you have created a site column open the site column gallery, if you created a column on a list open the list settings.

3.  Click on the column name.

4.  Check the URL for the "field" querystring parameter, as you see from the screenshot below it contains the internal name.

column

 

Other ways include ...

using .NET

You can also find out the escaped version using the System.Xml namespace and the XmlConvert.EncodeName.  For example:

using System.Xml;

// encode the column name
string escapedString = XmlConvert.EncodeName("Published Date");

// decode the escaped column name
string normalString = XmlConvert.DecodeName(escapedString);

which produces

escapedString = Published_X0020_Date

normalString = Published Date

 

Content Types Viewer

Download it here MOSS Content Types Viewer - Home

More about the Content Type Viewer http://www.davehunter.co.uk/Blog/Lists/Posts/Post.aspx?ID=100.

You can browse to the SharePoint environment, browse the content types and investigate the columns which are associated to the content type chosen, using the "show fields" button.

 

Controlling the internal name

You can control the internal names when you provision the site columns using a feature.  You can also do this using the User Interface by creating a field without any spaces or special characters and then re-edit the column to change the display name with any characters you wish.

 

Hope this helps

Delving into Deploying SharePoint Artifacts with Features

I've seen many posts on forums with features deploying site collection features scoped at the web level.  Admittedly there is confusing factors, articles freely use the term site for a site collection and site for a sub site.  I hope by the end of reading this article it will be more clear.

The feature framework can deploy the following:

  • Masterpages
  • Page Layouts
  • Stylesheets
  • Images
  • Documents
  • WebPart Pages
  • WebPart Definitions 
  • List Definitions
  • List Instances
  • Content Types
  • Site Columns
  • Custom Actions

Features that should be scoped at the Site level (Site Collection).

  • Site Columns
  • Content Types
  • Provisioning Masterpages
  • Feature Receivers
  • Stapler
  • WebPart Definitions (.dwp or .webpart) to WebPart Gallery

Features that should be scoped at the Web level (SPWeb)

  • List Instances
  • List Definitions
  • Custom Actions / Hide Custom Actions
  • Web Part Pages
  • Document, Images provisioned to libraries
  • Content Type Bindings
  • Event Receivers
  • Feature Receivers

Features that should be scoped at the WebApplication level (Web Application)

  • Custom Actions / Hide Custom Actions
  • Stapler

Features that should be scoped at the Farm level

  • Stapler
  • Custom Actions / Hide Custom Actions

Examples:

  • Provisioning Site Columns
  • Provisioning Content Types
  • Provisioning List Instances
  • Provisioning List Templates
  • Provisioning Web Part Pages including Web Parts
  • Provisioning Folders
  • Provisioning Documents
  • Provisioning Custom Actions and Hiding
  • Provisioning MasterPages
  • Provisioning Page Layouts
  • Site Stapling
  • Provisioning WebParts in the WebPart Gallery
  • Content Type Bindings
SharePoint - Connecting MySites with the Portal

With your typical intranet with MySites scenario you have two front-end web applications, one hosting your intranet and the other hosting your MySites.  These are two separate components.  MySites are a shared service, they are designed to be consumed by one or many web applications.  Out of the box they aren't linked to a web application hosting your intranet.

When a user creates a MySite they may ask you "how do I get back to the intranet?".  You can do this by setting the Portal Connection.

First take a look at my environment

Web Application

Purpose

http://intranet

SharePoint collaboration environment for internal staff

http://mysites

Hosting MySites

   

  1. Browse to the MySite host settings page.  In my case this is http://mysites/_layouts/settings.aspx
  2. Click on the "Portal Connection" link
  3. Enter the URL to the site you wish to connect to.  In my case this is http://intranet
  4. Enter a descriptive name
  5. Click OK.
SharePoint Event Receivers By Example - Email Validation

A while ago I wrote the article Delving into SharePoint 2007 Event Receivers its a popular article but lacks something, which I believe are some real world examples people can see in action and relate to ... Introducing the next series of articles SharePoint Event Receivers By Example.

One of the out of the box libraries in SharePoint is the contact list.  This holds contact information such as First Name, Last Name, Telephone, Email etc.  The email column is a standard single line of text site column.  I wanted to validate the email address users whilst creating contacts. 

Event Receivers have before or after events.  You would use a before event to capture users creating contacts and updating contacts.  You need to use the SPItemEventReceiver class and utilise the ItemAdding and ItemUpdating events.

To check the values that the user enters during a before event you should check the properties.AfterProperties.  This is a collection of name value pairs.  You can retrieve a value using the internal name of a column (not the display name).  For example:

string emailMessage = properties.AfterProperties["Email"].ToString();

You can cancel the event using:

properties.Status = SPEventReceiverStatus.CancelWithError;
properties.Cancel = true;
properties.ErrorMessage = "Please enter a valid email address";

 

The Status is set to cancel and display an error.  properties.Cancel determines if the event should be cancelled.  The default is false but once you set it to true it will cancel the event when the current execution ends.  An error message is set using the ErrorMessage property.  The following is displayed to the user:

 Email Validation using Event Receivers

Here's the code:

#region namespaces
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

using Microsoft.SharePoint;
using System.Collections;
#endregion

namespace Dhunter.SharePoint.EventReceivers
{
    public class ValidEmailEventReceiver : SPItemEventReceiver
    {
        #region events

        /// <summary>
        /// Test the email expression when the user creates a new item
        /// </summary>
        /// <param name="properties"></param>
        public override void ItemAdding(SPItemEventProperties properties)
        {
            base.ItemAdding(properties);

            // only perform if we have an Email column
            if (properties.AfterProperties["Email"] != null)
            {
                // test to see if the email is valid
                if (!IsValidEmailAddress(properties.AfterProperties["Email"].ToString()))
                {
                    // email validation failed, so display an error
                    properties.Status = SPEventReceiverStatus.CancelWithError;
                    properties.Cancel = true;
                    properties.ErrorMessage = "Please enter a valid email address";
                    
                }
            }

            
        }

        /// <summary>
        /// Test the email expression when the user updates an existing item
        /// </summary>
        /// <param name="properties"></param>
        public override void ItemUpdating(SPItemEventProperties properties)
        {
            base.ItemUpdating(properties);

            // only perform if we have an Email column
            if (properties.AfterProperties["Email"] != null)
            {
                // test to see if the email is valid
                if (!IsValidEmailAddress(properties.AfterProperties["Email"].ToString()))
                {
                    // email validation failed, so display an error
                    properties.Status = SPEventReceiverStatus.CancelWithError;
                    properties.Cancel = true;
                    properties.ErrorMessage = "Please enter a valid email address";
                    
                }
            }

            
        }

        #endregion

        #region private methods

        /// <summary>
        /// Test the email address to see if it meets the validation
        /// </summary>
        /// <param name="email"></param>
        /// <returns></returns>
        private bool IsValidEmailAddress(string email)
        {
            bool isValid = false;

            // regular expression to test the email
            string emailRegEx = @"^(([^<>()[\]\\.,;:\s@\""]+(\.[^<>()[\]\\.,;:\s@\""]+)*)|
(\"".+\""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$"; // run the test Regex reStrict = new Regex(emailRegEx); isValid = reStrict.IsMatch(email); // flag to indicate if its valid return isValid; } #endregion } }

 

My findings during creating this event receiver

  • BeforeProperties are only available in Event Receivers bound to a document library.  For more information please see http://msdn.microsoft.com/en-us/library/aa979520.aspx
  • BeforeProperties and AfterProperties contain a collection of DictionaryEntry's you should use the internal name of the column.  I tried this using the email address.  The internal name can be found by editing a site column and looking in the url, for example: /_layouts/fldedit.aspx?field=EMail.  I tried using properties.AfterProperties["EMail"] always returned null.  After looking into the collection the field was actually called "Email".  You can check these names using:

foreach (DictionaryEntry de in properties.AfterProperties)
{
  string key = de.Key.ToString();
  string value = de.Value.ToString();
}

  • Cancel doesn't stop the ItemAdding or ItemUpdating unless base.ItemAdding(properties); is called at the top of the event.
  • I used the SharePoint Tips Utility Pack http://www.codeplex.com/spstipsUtilityPack to bind the event receiver to the list.  The tool has a event handler management section that allows you to quickly register your event receiver to a list.

Happy coding.

Creating a Tree View Control WebPart

I had a requirement to create a tree view control to rollup document libraries into a single view.  I chose to use the System.Web.UI.WebControls.TreeView web control.

Once you define the tree view control you add nodes, for example:

TreeNode childNode = new TreeNode(file.Name, "", "~/_layouts/images/" + file.IconUrl, file.ServerRelativeUrl.ToString(), "");
treeView.ChildNodes.Add(childNode);

 

I wanted to get all document libraries for a current web, I used the SPWeb.GetListsOfType method, this takes in a SPBaseType enumeration.  For example:

currentWeb.GetListsOfType(SPBaseType.DocumentLibrary)

I wrote a recursive function which loops through all the root document libraries and loops through their folders.  This looked like:

foreach(SPList list in currentWeb.GetListsOfType(SPBaseType.DocumentLibrary))
{
  // build the tree
  rootNode = new System.Web.UI.WebControls.TreeNode(list.Title, "", "~/_layouts/images/itdl.gif", list.RootFolder.ServerRelativeUrl.ToString(), ""); 

  // loop down the tree
  TraverseFolder(list.RootFolder, rootNode); 

  // add the root node to tree view
  treeView.Nodes.Add(rootNode); 

}

The completed webpart looks like:

 Tree View Web Part

Here's the code:

#region namespaces
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; 

using Microsoft.SharePoint;
using System.Web.UI.WebControls.WebParts;
using AspControls = System.Web.UI.WebControls;
using System.Web.Caching;
#endregion 

namespace Dhunter.SharePoint.Controls
{
    public class DocumentLibraryViewerWebPart : System.Web.UI.WebControls.WebParts.WebPart
    {
        #region controls
        protected System.Web.UI.WebControls.TreeView treeView;
        private AspControls.TreeNode rootNode;
        #endregion 

        #region members
        private string listNamesToExclude = "Site Template Gallery;Converted Forms;Form Templates;
Images;Pages;Reporting Templates;Master Page Gallery;Site Collection Images;Site Collection Documents;
Style Library;List Template Gallery;PublishingImages;Web Part Gallery"
; private string userDefinedListNamesToExclude = ""; #endregion #region public properties /// <summary> /// List Name Exclusions /// </summary> [WebBrowsable(true), WebDisplayName("List Names to Exclude"), WebDescription("Names of lists that shouldn't be shown in the viewer in this site"), Personalizable(PersonalizationScope.Shared)] public string UserDefinedListNamesToExclude { get { return userDefinedListNamesToExclude; } set { userDefinedListNamesToExclude = value; } } #endregion #region constructor /// <summary> /// Constructor /// </summary> public DocumentLibraryViewerWebPart() { // set the export mode this.ExportMode = System.Web.UI.WebControls.WebParts.WebPartExportMode.All; } #endregion #region utility methods /// <summary> /// Checks if the List should be excluded (hidden) /// </summary> /// <param name="listName"></param> /// <returns></returns> private bool ExcludeListName(string listName) { string[] arr = listNamesToExclude.Split(Convert.ToChar(";")); bool isPresent = arr.Contains(listName); if (isPresent == false) { string[] userDefArr = UserDefinedListNamesToExclude.Split(Convert.ToChar(";")); isPresent = userDefArr.Contains(listName); } if (isPresent) Console.WriteLine(listName); return isPresent; } #endregion #region overriden methods /// <summary> /// Create the child controls /// </summary> protected override void CreateChildControls() { // get the current site SPSite currentSite = SPContext.Current.Site; using (SPWeb currentWeb = currentSite.OpenWeb()) { // set the tree view properties treeView = new System.Web.UI.WebControls.TreeView(); treeView.ShowLines = true; // show lines treeView.ExpandDepth = 0; // expand non treeView.CssClass = "docLibViewer"; // set the class // loop through the lists of the current web // only show document libraries foreach (SPList list in currentWeb.GetListsOfType(SPBaseType.DocumentLibrary)) { // only show document libraries that haven't been excluded by the system document libraries or by the user exclusion (via the webpart properties) if (!ExcludeListName(list.Title)) { // build the tree rootNode = new System.Web.UI.WebControls.TreeNode(list.Title, "", "~/_layouts/images/itdl.gif",
list.RootFolder.ServerRelativeUrl.ToString(), ""); // loop down the tree TraverseFolder(list.RootFolder, rootNode); // add the root node to tree view treeView.Nodes.Add(rootNode); } } } this.Controls.Add(treeView); base.CreateChildControls(); } /// <summary> /// Render Contents /// </summary> /// <param name="writer"></param> protected override void RenderContents(System.Web.UI.HtmlTextWriter writer) { // render the control base.RenderContents(writer); } #endregion #region public methods /// <summary> /// Loop through the folders /// </summary> /// <param name="folder"></param> /// <param name="node"></param> public void TraverseFolder(SPFolder folder, AspControls.TreeNode node) { // create a new node AspControls.TreeNode newNode = new System.Web.UI.WebControls.TreeNode(folder.Name, "", "~/_layouts/images/itdl.gif",
folder.ServerRelativeUrl.ToString(), ""); try { // don't add the forms folder if (folder.Name != "Forms") { // loop through all child folders foreach (SPFolder childFolder in folder.SubFolders) { // don't add the forms folder if (childFolder.Name != "Forms") { // create a new node and recurse AspControls.TreeNode trn = new System.Web.UI.WebControls.TreeNode(childFolder.Name, "",
"~/_layouts/images/itdl.gif", childFolder.ServerRelativeUrl.ToString(), ""); newNode = TraverseFiles(childFolder, trn); // add the new node to the tree rootNode.ChildNodes.Add(newNode); } } // loop through the files foreach (SPFile childFile in folder.Files) { // create a new node and add to the tree AspControls.TreeNode childNode = new System.Web.UI.WebControls.TreeNode(childFile.Name + " (" + childFile.TimeLastModified.ToShortDateString()
+ ")", "", "~/_layouts/images/" + childFile.IconUrl, childFile.ServerRelativeUrl.ToString(), ""); rootNode.ChildNodes.Add(childNode); } } } catch (Exception e) { //TODO: handle error } } /// <summary> /// Loop through the files /// </summary> /// <param name="fldr"></param> /// <param name="node"></param> /// <returns></returns> public AspControls.TreeNode TraverseFiles(SPFolder folder, AspControls.TreeNode node) { try { // add the files contained in this folder foreach (SPFile file in folder.Files) { // create a new node and add to the tree AspControls.TreeNode childNode = new System.Web.UI.WebControls.TreeNode(file.Name + " (" + file.TimeLastModified.ToShortDateString()
+ ")", "", "~/_layouts/images/" + file.IconUrl, file.ServerRelativeUrl.ToString(), ""); node.ChildNodes.Add(childNode); } // test if we have child folders bool blnRecurseFolders = folder.SubFolders.Count > 0 ? true : false; // if we have sub folders then loop through them if (blnRecurseFolders) { // loop through the child folders foreach (SPFolder childFolder in folder.SubFolders) { // create a new node and loop through the files AspControls.TreeNode childNode = new System.Web.UI.WebControls.TreeNode(childFolder.Name); node.ChildNodes.Add(TraverseFiles(childFolder, childNode)); } } } catch (Exception e) { //TODO: handle error } return node; } #endregion } }
Display a page without any navigation

It's a common requirement to want a page which is print friendly or a page which doesn't display any navigation.  I had a similar requirement for a tree view control to be displayed with scrollbars, at first you may not think these are related, but the way I designed it to cater for the scrollbars made it similar.  I split this requirement into two parts: 1. The tree view control and 2. Using the Page Viewer webpart and displaying a page without navigation, header and footer (just the contents).

I will cover the treeview control in another post.  As for displaying a page without any navigation, header and footer.  In the previous version of SharePoint it was typical practice to hide elements of the page using CSS.  I used the same approach to achieve this.  In the past I've used the Style Under Cursor DWP and highly recommended it to find out CSS classes and hierarchal structural elements.  With this information you can then hide elements using .className { display:none !IMPORTANT; }.  This CSS can be added to a separate stylesheet that you add or by using a content editor webpart.  I chose the last option, the content editor webpart. 

If you look at the core.css and search for @media you will find a print section, which hides some of structural elements of the page when you print the page or use the print preview.  This gave me a start and then it was just finding out which other elements I needed to hide.

The following hides the left hand navigation, header, right hand side and footer from SharePoint V3 site using the default.master.

<style>
.ms-leftareacell,.ms-globallinks,.ms-siteaction,.ms-areaseparatorleft,.ms-rightareacell,.ms-areaseparatorright,
.ms-areaseparatorcorner,.ms-titlearealeft,.ms-titlearearight,.ms-searchform,.ms-banner,.ms-buttonheightwidth,
.ms-buttonheightwidth2, .ms-globalTitleArea, .ms-globalbreadcrumb, .ms-bannerContainer, .ms-pagetitleareaframe,
.ms-consolestatuscell, .ms-pagemargin, .ms-bodyareapagemargin, .ms-pagebottommarginleft,
.ms-pagebottommarginright, .ms-pagebottommargin, .ms-titleareaframe { display:none !IMPORTANT; } .ms-bodyareaframe, .ms-bodyareacell, .ms-propertysheet { border:0px !IMPORTANT; } /* doc viewer related styles */ .docLibViewer a{ margin-left: 2px;margin-right: 2px; } .docLibViewer img { margin-left: 2px;margin-right: 2px; } </style>

Adding CSS using a Content Editor Web Part

This renders the page like this.

Page with CSS hiding the navigation etc 

I then added a page viewer webpart and pointed this to the page containing the tree view control.

Homepage with Tre View

The final result looks good.

Navigation only showing 50 sites

You may of come across this behaviour with navigation or the Table of Contents WebPart.  These webparts use a Portal Site Map Provider for their datasource.  By default these have limits for the dynamic and static navigation behaviour.  You can override these by specifying

StaticChildLimit="<int>"

DynamicChildLimit="<int>"

0 represents no limit, whereas 100 states there can be 100 children.

For example:

<add name="GlobalNavSiteMapProvider" description="CMS provider for Global navigation" type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider, Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" NavigationType="Global" EncodeOutput="true" StaticChildLimit="0" DynamicChildLimit="0" />

<add name="CurrentNavSiteMapProvider" description="CMS provider for Current navigation" type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider, Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" NavigationType="Current" EncodeOutput="true" StaticChildLimit="0" DynamicChildLimit="0" />

The web.config is usually found in c:\inetpub\wwwroot\wss\VirtualDirectories\sitename\.  You can also find this by opening IIS Manager > Expand "Web Sites" > Right click and select properties > select the "Home Directory" tab > look at the local path.  Make sure you backup the web.config by making a copy before you make any changes.

Overriding the display of a Lookup Field using a DisplayTemplate

Lookup fields in Page Layouts by default are rendered as a hyperlink, with a link to the list item used in the lookup.  The example below displays "Category" as the lookup.

Standard Presentation View

 

You can override this by specifying a DisplayTemplate in the Page Layout.  The following example displays the lookup as text wrapped in <h2> tags.

 

<SharePointWebControls:LookupField FieldName="CSDFAQCategory" runat="server">
    <DisplayTemplate>
      <h2><SharePointWebControls:FieldValue runat="server" ControlMode="Display"></SharePointWebControls:FieldValue></h2>
    </DisplayTemplate>

This renders as the following in display mode.

 Presentation View - with DisplayTemplate

When authoring the page the rendering of the control is unchanged.

 Edit View

Hope this helps

Upload Masterpages and Page Layouts with STSADM Custom Command

When developing sites for SharePoint using solution deployment (WSP) you think about provisioning of masterpages and page layouts using features, like the one below:

<Module Name="MasterPages" Url="_catalogs/masterpage" Path="sourcefolder">

<File Url="CustomSite.master" Type="GhostableInLibrary">

<Property Name="Title" Value="Custom Site Masterpage" />

<Property Name="ContentType" Value="$Resources:cmscore,contenttype_masterpage_name" />

</Module>

But what happens when the site is deployed and you need to make changes to masterpages and page layouts ...

1. You cant create a feature like the one above with IgnoreIfAlreadyExists.

<Module Name="MasterPages" Url="_catalogs/masterpage" Path="sourcefolder">

<File Url="CustomSite.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE">

<Property Name="Title" Value="Custom Site Masterpage" />

<Property Name="ContentType" Value="$Resources:cmscore,contenttype_masterpage_name" />

</Module>

This fails with file already exists, even though the IgnoreIfAlreadyExists property is specified.

2. You can edit using SharePoint Designer, but if you don't have access to SharePoint Designer you are out of options. 

3. You could upload these to the gallery in SharePoint if you have permissions.

4. You can use STSADM Export / Import but this will bring over all content.  I prefer to make the deployment footprint as small as possible.

I decided to create a custom STSADM command which will modify the existing files or add new ones if they don't exist.  The STSADM command is called "UploadMasterPagesAndPageLayouts" and accepts the following parameters

operation_uploadmpagesandplayouts

Here is an example of the usage:

STSADM -O uploadmasterpagesandpagelayouts -url http://intranet -folder "c:\deploy" -comment "uploaded by a tool" -version  "major" -autoapprove

This will upload all files in the deploy folder to http://intranet as major versions and approved. The only optional parameter is the autoapprove flag, by default this is leave unapproved.

Download the extension here http://uploadplmp.codeplex.com/Release/ProjectReleases.aspx

SharePoint 2007 Fatal Execution Engine Error (7A05E2B3) (80131506)

I recently setup a new MOSS Farm, during configuration I experienced a 401 Access Denied Error when clicking on Search usage reports in the Shared Services Administration.  I'm logged in as a Farm Administrator but get a 401 error, strange.  I reviewed the error log but didn't find anything helpful.  I decided to Enable ASP.NET Error Pages to better diagnose the problem.  After repeating the steps to replicate the error I received the following:

.NET Runtime version 2.0.50727.42 - Fatal Execution Engine Error (7A05E2B3) (80131506)

There's a hotfix available http://support.microsoft.com/kb/913384

The actual download for the hotfix can be found here http://code.msdn.microsoft.com/KB913384/Release/ProjectReleases.aspx?ReleaseId=771 (carefully review the downloads and pick the correct one for your environment, 32bit, 64bit or 64bit Itanium).

Please note: After installing the hotfix a reboot was required.  I would advise scheduling the installation of the hotfix out of business hours.

1 - 10 Next
  Copyright
This work is licenced under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.0 UK: England & Wales License
  Site Map

 Dave Hunter

I'm currently a Senior Consultant at Netstore 2e2. I specialise in Microsoft Information Worker technologies (especially MOSS, MCMS and .NET), with over 8 years of experience within this area of specialism. 

I have gained two certifications for MOSS and WSS and look to complete the full certification track soon.

View Dave Hunter's profile on LinkedIn

  Subscribe in a reader


 Latest Posts

<
Expand/Collapse Year : 2009 ‎(12)
Expand/Collapse Month : 05 ‎(1)
Expand/Collapse Month : 04 ‎(2)
Expand/Collapse Month : 03 ‎(6)
Expand/Collapse Month : 02 ‎(3)
Expand/Collapse Year : 2008 ‎(31)
Expand/Collapse Month : 12 ‎(1)
Expand/Collapse Month : 11 ‎(4)
Expand/Collapse Month : 10 ‎(5)
Expand/Collapse Month : 06 ‎(3)
Expand/Collapse Month : 05 ‎(1)