Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ukázka ServiceDescription ukazuje, jak může služba načíst informace o popisu služby za běhu. Ukázka je založená na začínáme s další operací služby definovanou tak, aby vracela popisné informace o službě. Vrácené informace uvádějí základní adresy a koncové body pro službu. Služba poskytuje tyto informace pomocí OperationContext, ServiceHosta ServiceDescription třídy.
V této ukázce je klient konzolovou aplikací (.exe) a služba je hostovaná internetovou informační službou (IIS).
Poznámka:
Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.
Tato ukázka obsahuje upravenou verzi kontraktu kalkulačky s názvem IServiceDescriptionCalculator. Kontrakt definuje další operaci služby s názvem GetServiceDescriptionInfo , která vrátí víceřádkový řetězec klientovi, který popisuje základní adresu nebo adresy a koncový bod služby nebo koncové body služby pro službu.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface IServiceDescriptionCalculator
{
[OperationContract]
int Add(int n1, int n2);
[OperationContract]
int Subtract(int n1, int n2);
[OperationContract]
int Multiply(int n1, int n2);
[OperationContract]
int Divide(int n1, int n2);
[OperationContract]
string GetServiceDescriptionInfo();
}
Kód implementace pro GetServiceDescriptionInfo používá ServiceDescription k vypsání koncových bodů služby. Vzhledem k tomu, že koncové body služby můžou mít relativní adresy, nejprve vypíše základní adresy pro službu. Pro získání všech těchto informací kód získá svůj kontext operace pomocí Current. Objekt ServiceHost a jeho ServiceDescription objekt jsou načteny z kontextu operace. Pokud chcete vypsat základní koncové body pro službu, kód iteruje prostřednictvím kolekce hostitele BaseAddresses služby. K vypsání koncových bodů služby prochází kód kolekcí koncových bodů popisu služby.
public string GetServiceDescriptionInfo()
{
string info = "";
OperationContext operationContext = OperationContext.Current;
ServiceHost host = (ServiceHost)operationContext.Host;
ServiceDescription desc = host.Description;
// Enumerate the base addresses in the service host.
info += "Base addresses:\n";
foreach (Uri uri in host.BaseAddresses)
{
info += " " + uri + "\n";
}
// Enumerate the service endpoints in the service description.
info += "Service endpoints:\n";
foreach (ServiceEndpoint endpoint in desc.Endpoints)
{
info += " Address: " + endpoint.Address + "\n";
info += " Binding: " + endpoint.Binding.Name + "\n";
info += " Contract: " + endpoint.Contract.Name + "\n";
}
return info;
}
Při spuštění ukázky se zobrazí operace kalkulačky a informace o službě vrácené operací GetServiceDescriptionInfo. Stisknutím klávesy ENTER v okně klienta klienta ukončete klienta.
Add(15,3) = 18
Subtract(145,76) = 69
Multiply(9,81) = 729
Divide(22,7) = 3
GetServiceDescriptionInfo
Base addresses:
http://<machine-name>/ServiceModelSamples/service.svc
https://<machine-name>/ServiceModelSamples/service.svc
Service endpoints:
Address: http://<machine-name>/ServiceModelSamples/service.svc
Binding: WSHttpBinding
Contract: IServiceDescriptionCalculator
Address: http://<machine-name>/ServiceModelSamples/service.svc/mex
Binding: MetadataExchangeHttpBinding
Contract: IMetadataExchange
Press <ENTER> to terminate client.
Jak nastavit, sestavit a spustit ukázku
Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.
Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.
Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.