Instrukcje: Eksportowanie metadanych ze skompilowanego kodu usługi za pomocą programu Svcutil.exe

Svcutil.exe mogą eksportować metadane dla usług, kontraktów i typów danych w skompilowanych zestawach w następujący sposób:

  • Aby wyeksportować metadane dla wszystkich skompilowanych kontraktów usług dla zestawu zestawów przy użyciu Svcutil.exe, określ zestawy jako parametry wejściowe. To jest zachowanie domyślne.

  • Aby wyeksportować metadane dla skompilowanej usługi przy użyciu Svcutil.exe, określ zestaw usługi lub zestawy jako parametry wejściowe. Należy użyć /serviceName opcji , aby wskazać nazwę konfiguracji usługi, którą chcesz wyeksportować. Svcutil.exe automatycznie ładuje plik konfiguracji dla określonego zestawu wykonywalnego.

  • Aby wyeksportować wszystkie typy kontraktów danych w zestawie zestawów, użyj /dataContractOnly opcji .

Uwaga

/reference Użyj opcji , aby określić ścieżki plików do dowolnych zestawów zależnych.

Aby wyeksportować metadane dla skompilowanych kontraktów usług

  1. Skompiluj implementacje kontraktu usługi w co najmniej jednej bibliotece klas.

  2. Uruchom Svcutil.exe na skompilowanych zestawach.

    Uwaga

    Może być konieczne użycie przełącznika /reference w celu określenia ścieżki pliku do dowolnych zestawów zależnych.

    svcutil.exe Contracts.dll  
    

Aby wyeksportować metadane dla skompilowanej usługi

  1. Skompiluj implementację usługi do zestawu wykonywalnego.

  2. Utwórz plik konfiguracji pliku wykonywalnego usługi i dodaj konfigurację usługi.

    <?xml version="1.0" encoding="utf-8" ?>  
    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name="MyService" >  
            <endpoint address="finder" contract="IPeopleFinder" binding="wsHttpBinding" />  
          </service>  
        </services>  
      </system.serviceModel>  
    </configuration>  
    
  3. Uruchom Svcutil.exe na skompilowanym pliku wykonywalnego usługi przy użyciu /serviceName przełącznika, aby określić nazwę konfiguracji usługi.

    Uwaga

    Może być konieczne użycie przełącznika /reference w celu określenia ścieżki pliku do dowolnych zestawów zależnych.

    svcutil.exe /serviceName:MyService Service.exe /reference:path/Contracts.dll  
    

Aby wyeksportować metadane dla skompilowanych kontraktów danych

  1. Skompiluj implementacje kontraktu danych w co najmniej jednej bibliotece klas.

  2. Uruchom Svcutil.exe na skompilowanych zestawach przy użyciu przełącznika /dataContract , aby określić, że powinny być generowane tylko metadane kontraktów danych.

    Uwaga

    Może być konieczne użycie przełącznika /reference w celu określenia ścieżki pliku do dowolnych zestawów zależnych.

    svcutil.exe /dataContractOnly Contracts.dll  
    

Przykład

W poniższym przykładzie pokazano, jak wygenerować metadane dla prostej implementacji i konfiguracji usługi.

Aby wyeksportować metadane dla kontraktu usługi.

svcutil.exe Contracts.dll  

Aby wyeksportować metadane kontraktów danych.

svcutil.exe /dataContractOnly Contracts.dll  

Aby wyeksportować metadane dla implementacji usługi.

svcutil.exe /serviceName:MyService Service.exe /reference:<path>/Contracts.dll  

Jest <path> to ścieżka do Contracts.dll.

// The following service contract and data contracts are compiled into
// Contracts.dll.  
[ServiceContract(ConfigurationName="IPeopleFinder")]  
public interface IPersonFinder  
{  
    [OperationContract]  
    Address GetAddress(Person s);  
}  
  
[DataContract]  
public class Person  
{  
    [DataMember]  
    public string firstName;  
    [DataMember]  
    public string lastName;  
    [DataMember]  
    public int age;  
}  
  
[DataContract]  
public class Address  
{  
    [DataMember]  
    public string city;  
    [DataMember]  
    public string state;  
    [DataMember]  
    public string street;  
    [DataMember]  
    public int zipCode;  
    [DataMember]  
    public Person person;  
}  
// The following service implementation is compiled into Service.exe.
// This service uses the contracts specified in Contracts.dll.  
[ServiceBehavior(ConfigurationName = "MyService")]  
public class MyService : IPersonFinder  
{  
    public Address GetAddress(Person person)  
    {  
        Address address = new Address();  
        address.person = person;  
        return address;  
    }  
}  
<!-- The following is the configuration file for Service.exe. -->  
<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
  <system.serviceModel>  
    <services>  
      <service name="MyService">  
         <endpoint  address="finder"  
                    binding="basicHttpBinding"  
                    contract="IPeopleFinder"/>  
      </service>  
    </services>  
  </system.serviceModel>  
</configuration>  

Zobacz też