AspNetCompatibilityRequirementsAttribute Classe

Definição

Aplicado a um serviço da Windows Communication Foundation (WCF) para indicar se esse serviço pode ser executado em código de compatibilidade ASP.NET.

public ref class AspNetCompatibilityRequirementsAttribute sealed : Attribute, System::ServiceModel::Description::IServiceBehavior
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class AspNetCompatibilityRequirementsAttribute : Attribute, System.ServiceModel.Description.IServiceBehavior
[<System.AttributeUsage(System.AttributeTargets.Class)>]
type AspNetCompatibilityRequirementsAttribute = class
    inherit Attribute
    interface IServiceBehavior
Public NotInheritable Class AspNetCompatibilityRequirementsAttribute
Inherits Attribute
Implements IServiceBehavior
Herança
AspNetCompatibilityRequirementsAttribute
Atributos
Implementações

Exemplos

Os programadores de serviços podem garantir que o seu serviço só é executado em Modo de Compatibilidade ASP.NET definindo a propriedade RequirementsMode no AspNetCompatibilityRequirementsAttribute para Required, como mostrado no exemplo seguinte

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculatorSession
{
    [OperationContract]
    void Clear();
    [OperationContract]
    void AddTo(double n);
    [OperationContract]
    void SubtractFrom(double n);
    [OperationContract]
    void MultiplyBy(double n);
    [OperationContract]
    void DivideBy(double n);
    [OperationContract]
    double Equals();
}
<ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples")> _
Public Interface ICalculatorSession

    <OperationContract()> _
    Sub Clear()
    <OperationContract()> _
    Sub AddTo(ByVal n As Double)
    <OperationContract()> _
    Sub SubtractFrom(ByVal n As Double)
    <OperationContract()> _
    Sub MultiplyBy(ByVal n As Double)
    <OperationContract()> _
    Sub DivideBy(ByVal n As Double)
    <OperationContract()> _
    Function Equal() As Double
End Interface
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class CalculatorService : ICalculatorSession
{
    double result
    {   // Store result in AspNet session.
        get
        {
            if (HttpContext.Current.Session["Result"] != null)
                return (double)HttpContext.Current.Session["Result"];
            return 0.0D;
        }
        set
        {
            HttpContext.Current.Session["Result"] = value;
        }
    }

    public void Clear()
    {
    }

    public void AddTo(double n)
    {
        result += n;
    }

    public void SubtractFrom(double n)
    {
        result -= n;
    }

    public void MultiplyBy(double n)
    {
        result *= n;
    }

    public void DivideBy(double n)
    {
        result /= n;
    }

    public double Equals()
    {
        return result;
    }
}
    <AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Required)> _
    Public Class CalculatorService
        Implements ICalculatorSession

        Property Result() As Double
            ' Store result in AspNet Session.
            Get
                If (HttpContext.Current.Session("Result") Is Nothing) Then
                    Return 0D
                End If
                Return HttpContext.Current.Session("Result")
            End Get
            Set(ByVal value As Double)
                HttpContext.Current.Session("Result") = value
            End Set
        End Property

        Public Sub Clear() _
 Implements ICalculatorSession.Clear
            Result = 0D
        End Sub

        Public Sub AddTo(ByVal n As Double) _
Implements ICalculatorSession.AddTo
            Result += n
        End Sub

        Public Sub SubtractFrom(ByVal n As Double) _
Implements ICalculatorSession.SubtractFrom

            Result -= n
        End Sub

        Public Sub MultiplyBy(ByVal n As Double) _
Implements ICalculatorSession.MultiplyBy

            Result *= n
        End Sub

        Public Sub DivideBy(ByVal n As Double) _
Implements ICalculatorSession.DivideBy

            Result /= n
        End Sub

        Public Function Equal() As Double _
Implements ICalculatorSession.Equal

            Return Result
        End Function
    End Class

Observações

Quando aplicado a uma classe de implementação de serviço, este atributo indica se este serviço requer ou suporta o modo de compatibilidade ASP.NET para estar ativado para o domínio de aplicação anfitrião (AppDomain).

AppDomains que alojam serviços WCF podem funcionar em dois modos de alojamento diferentes:

  • Modo de Transporte Misto (Padrão): Neste modo, os serviços WCF não participam no pipeline HTTP ASP.NET. Isto garante que um serviço WCF se comporta de forma consistente, independentemente do ambiente de alojamento e do transporte.

  • Modo de Compatibilidade ASP.NET: Neste modo, os serviços WCF participam no pipeline HTTP ASP.NET de forma semelhante aos serviços ASMX. Funcionalidades do ASP.NET como Autorização de Ficheiros, Authorização Url e Estado de Sessão HTTP são aplicáveis a serviços WCF a correr neste modo.

O modo de alojamento é controlado pela flag aspNetCompatibilityEnabledde configuração ao nível da aplicação .

<system.serviceModel>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

</system.serviceModel>

Esta flag é false por defeito e, por isso, os serviços WCF correm no Modo de Transportes Mistos, a menos que opte explicitamente pelo modo de compatibilidade ASP.NET.

Para mais informações sobre o modo de compatibilidade ASP.NET, consulte <serviceHostingEnvironment>.

Use a RequirementsMode propriedade para isso. Em tempo de execução, as aplicações podem detetar se ASP.NET modo de compatibilidade está ativado verificando o valor da propriedade estática AspNetCompatibilityEnabled.

Construtores

Name Description
AspNetCompatibilityRequirementsAttribute()

Inicializa uma nova instância da AspNetCompatibilityRequirementsAttribute classe.

Propriedades

Name Description
RequirementsMode

Obtém ou define o nível de compatibilidade ASP.NET exigido pelo serviço.

TypeId

Quando implementado numa classe derivada, obtém um identificador único para esta Attribute.

(Herdado de Attribute)

Métodos

Name Description
Equals(Object)

Devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Devolve o código de hash para esta instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)
IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection)

Adiciona dados personalizados aos quais os elementos de ligação podem aceder para suportar a implementação do contrato.

IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase)

Verifica se o tipo de alojamento é consistente com os requisitos de compatibilidade ASP.NET.

IServiceBehavior.Validate(ServiceDescription, ServiceHostBase)

Valida o comportamento do serviço.

Aplica-se a