Condividi tramite


Procedura: specificare un'associazione al servizio in configurazione

In questo esempio viene definito un contratto ICalculator per un servizio calcolatrice di base, il servizio viene implementato nella classe CalculatorService, quindi l'endpoint relativo viene configurato nel file Web.config dove viene specificato che il servizio utilizza BasicHttpBinding. Per una descrizione della modalità di configurazione di questo servizio utilizzando codice anziché una configurazione, vedere Procedura: specificare un'associazione al servizio in codice.

La procedura solitamente consigliata consiste nello specificare in modo dichiarativo l'associazione e le informazioni dell'indirizzo nella configurazione anziché in modo imperativo nel codice. La definizione di endpoint nel codice non è generalmente pratica perché le associazioni e gli indirizzi per un servizio distribuito sono solitamente diversi da quelli utilizzati durante lo sviluppo del servizio. Più in generale, se l'associazione e le informazioni di indirizzo vengono tenute fuori dal codice, esse possono cambiare senza che sia necessario ricompilare o ridistribuire l'applicazione.

Tutti i passaggi di configurazione seguenti possono essere eseguiti utilizzando lo strumento Configuration Editor Tool (SvcConfigEditor.exe).

Per l'originale di questo esempio, vedere Basic Binding Samples.

Per specificare l'elemento BasicHttpBinding necessario per la configurazione del servizio

  1. Definire un contratto di servizio per il tipo di servizio.

  2. Implementare il contratto di servizio in una classe del servizio.

    Nota

    L'indirizzo o le informazioni di associazione non sono specificate nell'implementazione del servizio. Non è necessario, inoltre, scrivere codice per recuperare le informazioni dal file di configurazione.

  3. Creare un file Web.config per configurare un endpoint per l'elemento CalculatorService che utilizza la classe WSHttpBinding.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <services>
          <service name=" CalculatorService" >
            <endpoint 
            <-- Leave the address blank to be populated by default-->
            <--from the hosting environment,in this case IIS, so -->
            <-- the address will just be that of the IIS Virtual -->
            <--Directory.-->
                address="" 
            <--Specify the binding type -->
                binding="wsHttpBinding"
            <--Specify the binding configuration name for that -->
            <--binding type. This is optional but useful if you  -->
            <--want to modify the properties of the binding. -->
            <--The bindingConfiguration name Binding1 is defined  -->
            <--below in the bindings element.  -->
                bindingConfiguration="Binding1"
                contract="ICalculator" />
          </service>
        </services>
        <bindings>
          <wsHttpBinding>
            <binding name="Binding1">
              <-- Binding property values can be modified here. -->
              <--See the next procedure. -->
            </binding>
          </wsHttpBinding>
       </bindings>
      </system.serviceModel>
    </configuration>
    
  4. Creare un file Service.svc contenente la riga seguente e salvarlo nella directory virtuale di Internet Information Services (IIS).

    <%@ServiceHost language=c# Service="CalculatorService" %> 
    

Per modificare i valori predefiniti delle proprietà dell'associazione

  1. Per modificare uno dei valori di proprietà predefiniti di WSHttpBinding, creare un nuovo nome di configurazione dell'associazione (<binding name="Binding1">) all'interno dell'elemento <wsHttpBinding> e impostare i nuovi valori per gli attributi dell'associazione in questo elemento di associazione. Per impostare, ad esempio valori di timeout di apertura e chiusura predefiniti di 1-2 minuti, aggiungere quanto segue nel file di configurazione.

          <wsHttpBinding>
            <binding name="Binding1"
                     closeTimeout="00:02:00"
                     openTimeout="00:02:00">
            </binding>
          </wsHttpBinding>
    

Vedere anche

Concetti

Utilizzo di associazioni per configurare servizi e client
Specifica di un indirizzo endpoint