AspNetCompatibilityRequirementsAttribute 類別

定義

套用至 Windows Communication Foundation (WCF) 服務,以表示是否可以在 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
繼承
AspNetCompatibilityRequirementsAttribute
屬性
實作

範例

服務開發人員可以將 上的 AspNetCompatibilityRequirementsAttribute 屬性設定 RequirementsModeRequired ,以確保其服務只在 ASP.NET 相容性模式中執行,如下列範例所示

[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

備註

套用至服務實作類別時,這個屬性會指出此服務是否需要或支援 ASP.NET 相容性模式,才能為裝載應用程式域啟用 (AppDomain) 。

裝載 WCF 服務的 AppDomains 可以在兩種不同的裝載模式中執行:

  • 混合傳輸模式 (預設) :在此模式中,WCF 服務不會參與 ASP.NET HTTP 管線。 這可確保 WCF 服務的行為一致,與裝載環境和傳輸無關。

  • ASP.NET 相容性模式:在此模式中,WCF 服務會以類似 ASMX 服務的方式參與 ASP.NET HTTP 管線。 ASP.NET 檔案授權、UrlAuthorization 和 HTTP 會話狀態等功能適用于在此模式中執行的 WCF 服務。

裝載模式是由應用程式層級的組態旗標 aspNetCompatibilityEnabled 所控制。

<system.serviceModel>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

</system.serviceModel>

此旗標預設為 false ,因此 WCF 服務會在混合傳輸模式中執行,除非您明確加入宣告 ASP.NET 相容性模式。

如需 ASP.NET 相容性模式的詳細資訊,請參閱 < serviceHostingEnvironment >

您可以使用 RequirementsMode 屬性來完成這個工作。 在執行時間,應用程式可以藉由檢查靜態屬性 AspNetCompatibilityEnabled 的值來偵測是否已啟用 ASP.NET 相容性模式。

建構函式

AspNetCompatibilityRequirementsAttribute()

初始化 AspNetCompatibilityRequirementsAttribute 類別的新執行個體。

屬性

RequirementsMode

取得或設定服務所需的 ASP.NET 相容性層級。

TypeId

在衍生類別中實作時,取得這個 Attribute 的唯一識別碼。

(繼承來源 Attribute)

方法

Equals(Object)

傳回值,這個值指出此執行個體是否與指定的物件相等。

(繼承來源 Attribute)
GetHashCode()

傳回這個執行個體的雜湊碼。

(繼承來源 Attribute)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
IsDefaultAttribute()

在衍生類別中覆寫時,表示這個執行個體的值是衍生類別的預設值。

(繼承來源 Attribute)
Match(Object)

在衍生類別中覆寫時,會傳回值,表示這個執行個體是否等於指定物件。

(繼承來源 Attribute)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

明確介面實作

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

將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。

(繼承來源 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

擷取物件的類型資訊,可以用來取得介面的類型資訊。

(繼承來源 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

擷取物件提供的類型資訊介面數目 (0 或 1)。

(繼承來源 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供物件所公開的屬性和方法的存取權。

(繼承來源 Attribute)
IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection)

加入繫結項目可存取的自訂資料,以便支援合約實作。

IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase)

檢查裝載的類型是否與 ASP.NET 相容性需求一致。

IServiceBehavior.Validate(ServiceDescription, ServiceHostBase)

驗證服務行為。

適用於