Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
GetAvailableWebTemplates method (UInt32, Boolean)
Collapse the table of content
Expand the table of content

SPWeb.GetAvailableWebTemplates method (UInt32, Boolean)

Gets the site templates that are available for creating subsites beneath the website, based on the specified locale identifier (ID) and whether to include language-neutral site templates.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

public SPWebTemplateCollection GetAvailableWebTemplates(
	uint lcid,
	bool doIncludeCrossLanguage


Type: System.UInt32

The locale ID of the web templates to be retrieved.

Type: System.Boolean

true to include language-neutral site templates; otherwise, false.

Return value

Type: Microsoft.SharePoint.SPWebTemplateCollection
The web templates.

In some instances, the specified custom site definition is not found because the custom site definition is not yet in the cache. This occurs when the following steps are made to create a new site collection based on the custom site definition:

  1. Add a solution that consists of site templates and features.

  2. Create a web application.

  3. Deploy the solution, including deployment of the application DLLs to the bin directory of the newly created web application.

  4. Create a new site collection that is based on the custom site definition that was deployed to the web application.

When this sequence occurs, steps 1, 2, and 3 work as expected, but when step 4 is performed, the application does not find the site definition for the newly deployed site. The issue arises because site templates are cached when a new web application is created.

There are four ways to work around this issue.

  1. Perform the first three steps, as described above, run the application, and then perform step 4. This restarts the process and allows the Web application to locate the deployed custom site definition.

  2. Create a console application that creates a site collection using the template for the custom site definition. Then, call the sequence of four steps that are listed above; however, when you come to step 4 (create site collection), load the console executable program that you created in a different process and allow it to complete step 4.

  3. Use the SharePoint Management Shell in the code itself. The web application is able to locate the newly deployed custom site definition.

  4. Add and deploy the solution manually by using the SharePoint UI, or by using the SharePoint Management Shell.

© 2015 Microsoft