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
Skompiluj implementacje kontraktu usługi w co najmniej jednej bibliotece klas.
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
Skompiluj implementację usługi do zestawu wykonywalnego.
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>
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
Skompiluj implementacje kontraktu danych w co najmniej jednej bibliotece klas.
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>