WSHttpBinding Klasa

Definicja

Reprezentuje powiązanie międzyoperacyjne, które obsługuje transakcje rozproszone i bezpieczne, niezawodne sesje.

public ref class WSHttpBinding : System::ServiceModel::WSHttpBindingBase
public class WSHttpBinding : System.ServiceModel.WSHttpBindingBase
type WSHttpBinding = class
    inherit WSHttpBindingBase
Public Class WSHttpBinding
Inherits WSHttpBindingBase
Dziedziczenie
Pochodne

Przykłady

Poniższy przykładowy kod pokazuje, jak używać WSHttpBinding klasy.

using System;
using System.ServiceModel;
using System.Collections.Generic;
using System.IdentityModel.Tokens;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
using System.ServiceModel.Security.Tokens;
using System.Security.Permissions;

// Define a service contract for the calculator.
[ServiceContract()]
public interface ICalculator
{
    [OperationContract(IsOneWay = false)]
    double Add(double n1, double n2);
    [OperationContract(IsOneWay = false)]
    double Subtract(double n1, double n2);
    [OperationContract(IsOneWay = false)]
    double Multiply(double n1, double n2);
    [OperationContract(IsOneWay = false)]
    double Divide(double n1, double n2);
}

public sealed class CustomBindingCreator
{

    public static void snippetSecurity()
    {
        WSHttpBinding wsHttpBinding = new WSHttpBinding();
        WSHttpSecurity whSecurity = wsHttpBinding.Security;
    }

    public static void snippetCreateBindingElements()
    {
        WSHttpBinding wsHttpBinding = new WSHttpBinding();
        BindingElementCollection beCollection = wsHttpBinding.CreateBindingElements();
    }

    private void snippetCreateMessageSecurity()
    {
        WSHttpBinding wsHttpBinding = new WSHttpBinding();
        // SecurityBindingElement sbe = wsHttpBinding
    }

    public static void snippetGetTransport()
    {
        WSHttpBinding wsHttpBinding = new WSHttpBinding();
        //		TransportBindingElement tbElement = wsHttpBinding.GetTransport();
    }

    public static void snippetAllowCookies()
    {
        WSHttpBinding wsHttpBinding = new WSHttpBinding();
        wsHttpBinding.AllowCookies = true;
    }

    public static Binding GetBinding()
    {
        // securityMode is Message
        // reliableSessionEnabled is true
        WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message, true);
        binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;

        WSHttpSecurity security = binding.Security;
        return binding;
    }

    public static Binding GetBinding2()
    {

        // The security mode is set to Message.
        WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message);
        binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
        return binding;
    }

    // This method creates a WSFederationHttpBinding.
    public static WSFederationHttpBinding CreateWSFederationHttpBinding()
    {
        // Create an instance of the WSFederationHttpBinding
        WSFederationHttpBinding b = new WSFederationHttpBinding();

        // Set the security mode to Message
        b.Security.Mode = WSFederationHttpSecurityMode.Message;

        // Set the Algorithm Suite to Basic256Rsa15
        b.Security.Message.AlgorithmSuite = SecurityAlgorithmSuite.Basic256Rsa15;

        // Set NegotiateServiceCredential to true
        b.Security.Message.NegotiateServiceCredential = true;

        // Set IssuedKeyType to Symmetric
        b.Security.Message.IssuedKeyType = SecurityKeyType.SymmetricKey;

        // Set IssuedTokenType to SAML 1.1
        b.Security.Message.IssuedTokenType = "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#samlv1.1";

        // Extract the STS certificate from the certificate store
        X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly);
        X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindByThumbprint, "cd 54 88 85 0d 63 db ac 92 59 05 af ce b8 b1 de c3 67 9e 3f", false);
        store.Close();

        // Create an EndpointIdentity from the STS certificate
        EndpointIdentity identity = EndpointIdentity.CreateX509CertificateIdentity(certs[0]);

        // Set the IssuerAddress using the address of the STS and the previously created EndpointIdentity
        b.Security.Message.IssuerAddress = new EndpointAddress(new Uri("http://localhost:8000/sts/x509"), identity);

        // Set the IssuerBinding to a WSHttpBinding loaded from config
        b.Security.Message.IssuerBinding = new WSHttpBinding("Issuer");

        // Set the IssuerMetadataAddress using the metadata address of the STS and the previously created EndpointIdentity
        b.Security.Message.IssuerMetadataAddress = new EndpointAddress(new Uri("http://localhost:8001/sts/mex"), identity);

        // Create a ClaimTypeRequirement
        ClaimTypeRequirement ctr = new ClaimTypeRequirement("http://example.org/claim/c1", false);

        // Add the ClaimTypeRequirement to ClaimTypeRequirements
        b.Security.Message.ClaimTypeRequirements.Add(ctr);

        // Return the created binding
        return b;
    }
}

// Service class which implements the service contract.
public class CalculatorService : ICalculator
{
    public double Add(double n1, double n2)
    {
        double result = n1 + n2; return result;
    }
    public double Subtract(double n1, double n2)
    {
        double result = n1 - n2; return result;
    }
    public double Multiply(double n1, double n2)
    {
        double result = n1 * n2; return result;
    }
    public double Divide(double n1, double n2)
    {
        double result = n1 / n2; return result;
    }

    // Host the service within this EXE console application.
    public static void Main()
    {
        // Create a WSHttpBinding and set its property values.
        WSHttpBinding binding = new WSHttpBinding();
        binding.Name = "binding1";
        binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
        binding.Security.Mode = SecurityMode.Message;
        binding.ReliableSession.Enabled = false;
        binding.TransactionFlow = false;
        //Specify a base address for the service endpoint.
        Uri baseAddress = new Uri(@"http://localhost:8000/servicemodelsamples/service");
        // Create a ServiceHost for the CalculatorService type
        // and provide it with a base address.
        ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);
        serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, baseAddress);
        // Open the ServiceHostBase to create listeners
        // and start listening for messages.
        serviceHost.Open();
        // The service can now be accessed.
        Console.WriteLine("The service is ready.");
        Console.WriteLine("Press <ENTER> to terminate service.");
        Console.WriteLine(); Console.ReadLine();
        // Close the ServiceHost to shutdown the service.
        serviceHost.Close();
    }
}

Imports System.ServiceModel
Imports System.Collections.Generic
Imports System.IdentityModel.Tokens
Imports System.Security.Cryptography.X509Certificates
Imports System.ServiceModel.Channels
Imports System.ServiceModel.Security
Imports System.ServiceModel.Security.Tokens
Imports System.Security.Permissions

' Define a service contract for the calculator. 
<ServiceContract()> _
Public Interface ICalculator
    <OperationContract(IsOneWay := False)> _
    Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
    <OperationContract(IsOneWay := False)> _
    Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
    <OperationContract(IsOneWay := False)> _
    Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
    <OperationContract(IsOneWay := False)> _
    Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
End Interface

Public NotInheritable Class CustomBindingCreator

    Public Shared Sub snippetSecurity()
        Dim wsHttpBinding As New WSHttpBinding()
        Dim whSecurity As WSHttpSecurity = wsHttpBinding.Security
    End Sub


    Public Shared Sub snippetCreateBindingElements()
        Dim wsHttpBinding As New WSHttpBinding()
        Dim beCollection As BindingElementCollection = wsHttpBinding.CreateBindingElements()
    End Sub


    Private Sub snippetCreateMessageSecurity()
        Dim wsHttpBinding As New WSHttpBinding()
    End Sub

    Public Shared Sub snippetGetTransport()
        Dim wsHttpBinding As New WSHttpBinding()
    End Sub

    Public Shared Sub snippetAllowCookies()
        Dim wsHttpBinding As New WSHttpBinding()
        wsHttpBinding.AllowCookies = True
    End Sub

    Public Shared Function GetBinding() As Binding
        ' securityMode is Message
        ' reliableSessionEnabled is true
        Dim binding As New WSHttpBinding(SecurityMode.Message, True)
        binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows

        Dim security As WSHttpSecurity = binding.Security
        Return binding

    End Function

    Public Shared Function GetBinding2() As Binding

        ' The security mode is set to Message.
        Dim binding As New WSHttpBinding(SecurityMode.Message)
        binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows
        Return binding

    End Function

    ' This method creates a WSFederationHttpBinding.
    Public Shared Function CreateWSFederationHttpBinding() As WSFederationHttpBinding
        ' Create an instance of the WSFederationHttpBinding
        Dim b As New WSFederationHttpBinding()

        ' Set the security mode to Message
        b.Security.Mode = WSFederationHttpSecurityMode.Message

        ' Set the Algorithm Suite to Basic256Rsa15
        b.Security.Message.AlgorithmSuite = SecurityAlgorithmSuite.Basic256Rsa15

        ' Set NegotiateServiceCredential to true
        b.Security.Message.NegotiateServiceCredential = True

        ' Set IssuedKeyType to Symmetric
        b.Security.Message.IssuedKeyType = SecurityKeyType.SymmetricKey

        ' Set IssuedTokenType to SAML 1.1
        b.Security.Message.IssuedTokenType = "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#samlv1.1"

        ' Extract the STS certificate from the certificate store
        Dim store As New X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser)
        store.Open(OpenFlags.ReadOnly)
        Dim certs As X509Certificate2Collection = store.Certificates.Find(X509FindType.FindByThumbprint, "cd 54 88 85 0d 63 db ac 92 59 05 af ce b8 b1 de c3 67 9e 3f", False)
        store.Close()

        ' Create an EndpointIdentity from the STS certificate
        Dim identity As EndpointIdentity = EndpointIdentity.CreateX509CertificateIdentity(certs(0))

        ' Set the IssuerAddress using the address of the STS and the previously created EndpointIdentity
        b.Security.Message.IssuerAddress = New EndpointAddress(New Uri("http://localhost:8000/sts/x509"), identity)

        ' Set the IssuerBinding to a WSHttpBinding loaded from config
        b.Security.Message.IssuerBinding = New WSHttpBinding("Issuer")

        ' Set the IssuerMetadataAddress using the metadata address of the STS and the previously created EndpointIdentity
        b.Security.Message.IssuerMetadataAddress = New EndpointAddress(New Uri("http://localhost:8001/sts/mex"), identity)

        ' Create a ClaimTypeRequirement
        Dim ctr As New ClaimTypeRequirement("http://example.org/claim/c1", False)

        ' Add the ClaimTypeRequirement to ClaimTypeRequirements
        b.Security.Message.ClaimTypeRequirements.Add(ctr)

        ' Return the created binding
        Return b
    End Function

End Class

' Service class which implements the service contract. 
Public Class CalculatorService
    Implements ICalculator
    Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Add
        Dim result = n1 + n2
        Return result
    End Function
    Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Subtract
        Dim result = n1 - n2
        Return result
    End Function
    Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Multiply
        Dim result = n1 * n2
        Return result
    End Function
    Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Divide
        Dim result = n1 / n2
        Return result
    End Function


    ' Host the service within this EXE console application. 
    Public Shared Sub Main()
        ' Create a WSHttpBinding and set its property values. 
        Dim binding As New WSHttpBinding()
        With binding
            .Name = "binding1"
            .HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
            .Security.Mode = SecurityMode.Message
            .ReliableSession.Enabled = False
            .TransactionFlow = False
        End With
        
        'Specify a base address for the service endpoint. 
        Dim baseAddress As New Uri("http://localhost:8000/servicemodelsamples/service")
        ' Create a ServiceHost for the CalculatorService type 
        ' and provide it with a base address. 
        Dim serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
        serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, baseAddress)
        ' Open the ServiceHostBase to create listeners 
        ' and start listening for messages. 
        serviceHost.Open()
        ' The service can now be accessed. 
        Console.WriteLine("The service is ready.")
        Console.WriteLine("Press <ENTER> to terminate service.")
        Console.WriteLine()
        Console.ReadLine()
        ' Close the ServiceHost to shutdown the service. 
        serviceHost.Close()
    End Sub
End Class

Uwagi

Element WSHttpBinding jest podobny do elementu BasicHttpBinding , ale zapewnia więcej funkcji usługi sieci Web. Używa transportu HTTP i zapewnia zabezpieczenia komunikatów, podobnie jak BasicHttpBinding, ale zapewnia również transakcje, niezawodne komunikaty i adresowanie WS, domyślnie włączone lub dostępne za pomocą jednego ustawienia kontrolki.

Konstruktory

WSHttpBinding()

Inicjuje nowe wystąpienie klasy WSHttpBinding.

WSHttpBinding(SecurityMode)

Inicjuje nowe wystąpienie WSHttpBinding klasy z określonym typem zabezpieczeń używanym przez powiązanie.

WSHttpBinding(SecurityMode, Boolean)

Inicjuje nowe wystąpienie WSHttpBinding klasy z określonym typem zabezpieczeń używanym przez powiązanie i wartością wskazującą, czy włączono niezawodną sesję.

WSHttpBinding(String)

Inicjuje WSHttpBinding nowe wystąpienie klasy z powiązaniem określonym przez jego nazwę konfiguracji.

Właściwości

AllowCookies

Pobiera lub ustawia wartość wskazującą, czy klient WCF będzie automatycznie przechowywać i ponownie wysyłać wszystkie pliki cookie wysyłane przez jedną usługę internetową.

BypassProxyOnLocal

Pobiera lub ustawia wartość wskazującą, czy pominąć serwer proxy dla adresów lokalnych.

(Odziedziczone po WSHttpBindingBase)
CloseTimeout

Pobiera lub ustawia interwał czasu podanego dla połączenia do zamknięcia, zanim transport zgłasza wyjątek.

(Odziedziczone po Binding)
EnvelopeVersion

Pobiera wersję protokołu SOAP, która jest używana dla komunikatów przetwarzanych przez to powiązanie.

(Odziedziczone po WSHttpBindingBase)
HostNameComparisonMode

Pobiera lub ustawia wartość wskazującą, czy nazwa hosta jest używana do osiągnięcia usługi podczas dopasowywania identyfikatora URI.

(Odziedziczone po WSHttpBindingBase)
MaxBufferPoolSize

Pobiera lub ustawia maksymalną ilość pamięci przydzielonej w bajtach dla menedżera buforów, który zarządza buforami wymaganymi przez punkty końcowe przy użyciu tego powiązania.

(Odziedziczone po WSHttpBindingBase)
MaxReceivedMessageSize

Pobiera lub ustawia maksymalny rozmiar w bajtach dla komunikatu, który może zostać przetworzony przez powiązanie.

(Odziedziczone po WSHttpBindingBase)
MessageEncoding

Pobiera lub ustawia, czy program MTOM, czy tekst/XML jest używany do kodowania komunikatów SOAP.

(Odziedziczone po WSHttpBindingBase)
MessageVersion

Pobiera wersję komunikatu używaną przez klientów i usługi skonfigurowane za pomocą powiązania.

(Odziedziczone po Binding)
Name

Pobiera lub ustawia nazwę powiązania.

(Odziedziczone po Binding)
Namespace

Pobiera lub ustawia przestrzeń nazw XML powiązania.

(Odziedziczone po Binding)
OpenTimeout

Pobiera lub ustawia interwał czasu podany dla połączenia do otwarcia, zanim transport zgłosi wyjątek.

(Odziedziczone po Binding)
ProxyAddress

Pobiera lub ustawia adres URI serwera proxy HTTP.

(Odziedziczone po WSHttpBindingBase)
ReaderQuotas

Pobiera lub ustawia ograniczenia złożoności komunikatów PROTOKOŁU SOAP, które mogą być przetwarzane przez punkty końcowe skonfigurowane za pomocą tego powiązania.

(Odziedziczone po WSHttpBindingBase)
ReceiveTimeout

Pobiera lub ustawia interwał czasu, przez który połączenie może pozostać nieaktywne, podczas którego nie są odbierane żadne komunikaty aplikacji, zanim zostanie porzucony.

(Odziedziczone po Binding)
ReliableSession

Pobiera obiekt, który zapewnia wygodny dostęp do właściwości elementu powiązania niezawodnej sesji, który jest dostępny podczas korzystania z jednego z powiązań dostarczanych przez system.

(Odziedziczone po WSHttpBindingBase)
Scheme

Pobiera schemat transportu identyfikatora URI dla kanałów i odbiorników skonfigurowanych za pomocą tego powiązania.

(Odziedziczone po WSHttpBindingBase)
Security

Pobiera ustawienia zabezpieczeń używane z tym powiązaniem.

SendTimeout

Pobiera lub ustawia interwał czasu dla operacji zapisu do ukończenia, zanim transport zgłosi wyjątek.

(Odziedziczone po Binding)
TextEncoding

Pobiera lub ustawia kodowanie znaków używane dla tekstu wiadomości.

(Odziedziczone po WSHttpBindingBase)
TransactionFlow

Pobiera lub ustawia wartość wskazującą, czy to powiązanie powinno obsługiwać przepływ operacji WS-Transactions.

(Odziedziczone po WSHttpBindingBase)
UseDefaultWebProxy

Pobiera lub ustawia wartość wskazującą, czy używany jest automatycznie skonfigurowany serwer proxy HTTP systemu, jeśli jest dostępny.

(Odziedziczone po WSHttpBindingBase)

Metody

BuildChannelFactory<TChannel>(BindingParameterCollection)

Tworzy stos fabryki kanałów na kliencie, który tworzy określony typ kanału i spełnia funkcje określone przez kolekcję parametrów powiązania.

BuildChannelFactory<TChannel>(BindingParameterCollection)

Tworzy stos fabryki kanałów na kliencie, który tworzy określony typ kanału i spełnia funkcje określone przez kolekcję parametrów powiązania.

(Odziedziczone po Binding)
BuildChannelFactory<TChannel>(Object[])

Tworzy stos fabryki kanałów na kliencie, który tworzy określony typ kanału i spełnia funkcje określone przez tablicę obiektów.

(Odziedziczone po Binding)
BuildChannelListener<TChannel>(BindingParameterCollection)

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia funkcje określone przez kolekcję parametrów powiązania.

(Odziedziczone po Binding)
BuildChannelListener<TChannel>(Object[])

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

(Odziedziczone po Binding)
BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

(Odziedziczone po Binding)
BuildChannelListener<TChannel>(Uri, Object[])

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

(Odziedziczone po Binding)
BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

(Odziedziczone po Binding)
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

(Odziedziczone po Binding)
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

(Odziedziczone po Binding)
BuildChannelListener<TChannel>(Uri, String, Object[])

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

(Odziedziczone po Binding)
CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Zwraca wartość wskazującą, czy bieżące powiązanie może utworzyć stos fabryki kanału na kliencie, który spełnia określone parametry powiązania.

(Odziedziczone po Binding)
CanBuildChannelFactory<TChannel>(Object[])

Zwraca wartość wskazującą, czy bieżące powiązanie może utworzyć stos fabryki kanałów na kliencie, który spełnia wymagania określone przez tablicę obiektów.

(Odziedziczone po Binding)
CanBuildChannelListener<TChannel>(BindingParameterCollection)

Zwraca wartość wskazującą, czy bieżące powiązanie może utworzyć stos odbiornika kanału w usłudze, która spełnia określone parametry powiązania.

(Odziedziczone po Binding)
CanBuildChannelListener<TChannel>(Object[])

Zwraca wartość wskazującą, czy bieżące powiązanie może utworzyć stos odbiornika kanału w usłudze, która spełnia kryteria określone w tablicy obiektów.

(Odziedziczone po Binding)
CreateBindingElements()

Zwraca uporządkowaną kolekcję elementów powiązania zawartych w bieżącym powiązaniu.

CreateMessageSecurity()

Zwraca element powiązania zabezpieczeń z bieżącego powiązania.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetProperty<T>(BindingParameterCollection)

Zwraca żądany obiekt typu z odpowiedniej warstwy w stosie powiązań.

(Odziedziczone po Binding)
GetTransport()

Zwraca element powiązania transportu z bieżącego powiązania.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ShouldSerializeName()

Zwraca, czy nazwa powiązania powinna być serializowana.

(Odziedziczone po Binding)
ShouldSerializeNamespace()

Zwraca, czy przestrzeń nazw powiązania powinna być serializowana.

(Odziedziczone po Binding)
ShouldSerializeReaderQuotas()

Zwraca wartość wskazującą, czy ReaderQuotas właściwość zmieniła się z wartości domyślnej i powinna być serializowana.

(Odziedziczone po WSHttpBindingBase)
ShouldSerializeReliableSession()

Zwraca wartość wskazującą, czy ReliableSession właściwość zmieniła się z wartości domyślnej i powinna być serializowana.

(Odziedziczone po WSHttpBindingBase)
ShouldSerializeSecurity()

Zwraca wartość wskazującą, czy Security właściwość zmieniła się z wartości domyślnej i powinna być serializowana.

ShouldSerializeTextEncoding()

Zwraca wartość wskazującą, czy TextEncoding właściwość zmieniła się z wartości domyślnej i powinna być serializowana.

(Odziedziczone po WSHttpBindingBase)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

IBindingRuntimePreferences.ReceiveSynchronously

Pobiera wartość wskazującą, czy żądania przychodzące są obsługiwane synchronicznie lub asynchronicznie.

(Odziedziczone po WSHttpBindingBase)

Dotyczy