This documentation is archived and is not being maintained.

GenerateScriptTypeAttribute Class

Specifies that the server type must be generated in the proxy object. This class cannot be inherited.

Namespace:  System.Web.Script.Services
Assembly:  System.Web.Extensions (in System.Web.Extensions.dll)

[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Interface, AllowMultiple = true)]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public sealed class GenerateScriptTypeAttribute : Attribute

In AJAX-enabled ASP.NET Web sites, ASP.NET can automatically generate proxy objects for methods of a Web service class. It does this for most top-level types for the input parameters and return values of any Web methods that are marked with ScriptServiceAttribute.

In other cases, if you proxy objects generated for server types, you must apply GenerateScriptTypeAttribute manually. You can apply GenerateScriptTypeAttribute to the Web service itself or to any Web service method or static page method marked with WebMethodAttribute.

In some cases, even if the type corresponds to an input parameter or return value of a Web service method, the proxy will not be generated automatically. In that case, you must use the GenerateScriptTypeAttribute attribute to generate the proxy object for the type. This occurs for generic types and arrays that have more than one argument, such as Dictionary<string,<T>>.

One or more instances of GenerateScriptTypeAttribute can be applied to a Web service class or method. ASP.NET will then generate an ECMAScript (JavaScript) proxy class for each top-level type that is referenced by each declaration of GenerateScriptTypeAttribute.


If you want to generate proxy objects for nested types, you must manually apply GenerateScriptTypeAttribute to each nested type. ASP.NET generates proxies only for top-level types and does not automatically recursively apply the attribute to nested types.

For more information about how to use attributes, see Extending Metadata Using Attributes.

The following example shows how to apply GenerateScriptTypeAttribute to a Web service class and to a Web method. As a result, the ColorObject type and its nested type FavoriteColors are included in the proxy object.

<%@ WebService Language="C#" Class="Samples.AspNet.ColorService" %>

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;

namespace Samples.AspNet

    [WebService(Namespace = "")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class ColorService : System.Web.Services.WebService

            ScriptTypeId = "Color")]
        public string[] GetDefaultColor()
            // Instantiate the default color object.
            ColorObject co = new ColorObject();

            return co.rgb;

        public string EchoDefaultColor()
            // Instantiate the default color object.
            ColorObject co = new ColorObject();

            return co.defaultColor.ToString();

    public class ColorObject
        public string[] rgb =
            new string[] { "00", "00", "FF" };
        public FavoriteColors defaultColor = FavoriteColors.Blue;

    public enum FavoriteColors


Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5