Web.GetAvailableWebTemplates method

Returns a collection of site templates available for the site.

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

public WebTemplateCollection GetAvailableWebTemplates(
	uint lcid,
	bool doIncludeCrossLanguage


Type: System.UInt32

Specifies the LCID of the site templates to be retrieved.

If the specified LCID is not a valid LCID, the server must return an empty collection.

An LCID is a 4-byte value. The value supplied in an LCID is a standard numeric substitution for the international [RFC4646] string.

Type: System.Boolean

Specifies whether to include language-neutral site templates.

Return value

Type: Microsoft.SharePoint.Client.WebTemplateCollection
Returns a WebTemplateCollection instance representing collection of site templates available for the site.


The current user has insufficient permissions. Error code: -2147024891.

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.