Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Określa publikację metadanych usługi i skojarzonych informacji.
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata>
Składnia
<serviceMetadata externalMetadataLocation="String"
httpGetBinding="String"
httpGetBindingConfiguration="String"
httpGetEnabled="Boolean"
httpGetUrl="String"
httpsGetBinding="String"
httpsGetBindingConfiguration="String"
httpsGetEnabled="Boolean"
httpsGetUrl="String"
policyVersion="Policy12/Policy15" />
Atrybuty i elementy
W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.
Attributes
| Attribute | Description |
|---|---|
| externalMetadataLocation | Identyfikator URI zawierający lokalizację pliku WSDL, który jest zwracany do użytkownika w odpowiedzi na żądania WSDL i MEX zamiast automatycznie generowanego pliku WSDL. Jeśli ten atrybut nie zostanie ustawiony, zostanie zwrócony domyślny kod WSDL. Wartość domyślna to pusty ciąg. |
| httpGetBinding | Ciąg określający typ powiązania, które będzie używane do pobierania metadanych za pośrednictwem protokołu HTTP GET. To ustawienie jest opcjonalne. Jeśli nie zostanie określony, zostaną użyte powiązania domyślne. Obsługiwane będą tylko powiązania z wewnętrznymi elementami powiązania, które IReplyChannel obsługują. MessageVersion Ponadto właściwość powiązania musi mieć wartość None. |
| httpGetBindingConfiguration | Ciąg, który ustawia nazwę powiązania określonego w atrybucie httpGetBinding , który odwołuje się do dodatkowych informacji o konfiguracji tego powiązania. Ta sama nazwa musi być zdefiniowana <bindings> w sekcji . |
| httpGetEnabled | Wartość logiczna określająca, czy opublikować metadane usługi na potrzeby pobierania przy użyciu żądania HTTP/Get. Wartość domyślna to false.Jeśli atrybut httpGetUrl nie jest określony, adres, pod którym metadane są publikowane, to adres usługi plus "?wsdl". Jeśli na przykład adres usługi to http://localhost:8080/CalculatorService, adresem metadanych HTTP/Get jest http://localhost:8080/CalculatorService?wsdl.Jeśli ta właściwość to false, lub adres usługi nie jest oparty na protokole HTTP lub HTTPS, ciąg "?wsdl" jest ignorowany. |
| httpGetUrl | Identyfikator URI określający adres, pod którym metadane są publikowane do pobierania przy użyciu żądania HTTP/Get. Jeśli określono względny identyfikator URI, będzie traktowany jako względny względem adresu podstawowego usługi. |
| httpsGetBinding | Ciąg określający typ powiązania, które będzie używane do pobierania metadanych za pośrednictwem protokołu HTTPS GET. To ustawienie jest opcjonalne. Jeśli nie zostanie określony, zostaną użyte powiązania domyślne. Obsługiwane będą tylko powiązania z wewnętrznymi elementami powiązania, które IReplyChannel obsługują. MessageVersion Ponadto właściwość powiązania musi mieć wartość None. |
| httpsGetBindingConfiguration | Ciąg, który ustawia nazwę powiązania określonego w atrybucie httpsGetBinding , który odwołuje się do dodatkowych informacji o konfiguracji tego powiązania. Ta sama nazwa musi być zdefiniowana <bindings> w sekcji . |
| httpsGetEnabled | Wartość logiczna określająca, czy opublikować metadane usługi na potrzeby pobierania przy użyciu żądania HTTPS/Get. Wartość domyślna to false.Jeśli atrybut httpsGetUrl nie jest określony, adres, pod którym są publikowane metadane, to adres usługi plus "?wsdl". Jeśli na przykład adres usługi to https://localhost:8080/CalculatorService, adresem metadanych HTTP/Get jest https://localhost:8080/CalculatorService?wsdl.Jeśli ta właściwość to false, lub adres usługi nie jest oparty na protokole HTTP lub HTTPS, ciąg "?wsdl" jest ignorowany. |
| httpsGetUrl | Identyfikator URI określający adres, pod którym metadane są publikowane do pobierania przy użyciu żądania HTTPS/Get. |
| policyVersion | Ciąg określający wersję używanej specyfikacji WS-Policy. Ten atrybut jest typu PolicyVersion. |
Elementy podrzędne
Żaden
Elementy nadrzędne
| Składnik | Description |
|---|---|
| <zachowanie> | Określa element zachowania. |
Uwagi
Ten element konfiguracji umożliwia sterowanie funkcjami publikowania metadanych usługi. Aby zapobiec przypadkowemu ujawnieniu potencjalnie poufnych metadanych usługi, domyślna konfiguracja usług Windows Communication Foundation (WCF) wyłącza publikowanie metadanych. To zachowanie jest domyślnie bezpieczne, ale oznacza również, że nie można użyć narzędzia importowania metadanych (takiego jak Svcutil.exe), aby wygenerować kod klienta wymagany do wywołania usługi, chyba że zachowanie publikowania metadanych usługi jest jawnie włączone w konfiguracji. Za pomocą tego elementu konfiguracji możesz włączyć to zachowanie publikowania dla usługi.
Aby uzyskać szczegółowy przykład konfigurowania tego zachowania, zobacz Zachowanie publikowania metadanych.
Opcjonalne httpGetBinding atrybuty i httpsGetBinding umożliwiają skonfigurowanie powiązań używanych do pobierania metadanych za pośrednictwem protokołu HTTP GET (lub HTTPS GET). Jeśli nie zostaną określone, domyślne powiązania (HttpTransportBindingElementw przypadku protokołu HTTP i HttpsTransportBindingElement, w przypadku protokołu HTTPS) są używane do pobierania metadanych odpowiednio. Zwróć uwagę, że nie można używać tych atrybutów z wbudowanymi powiązaniami WCF. Obsługiwane będą tylko powiązania z wewnętrznymi elementami powiązania, które IReplyChannel obsługują.
MessageVersion Ponadto właściwość powiązania musi mieć wartość None.
Aby zmniejszyć narażenie usługi na złośliwych użytkowników, można zabezpieczyć transfer przy użyciu mechanizmu SSL za pośrednictwem protokołu HTTP (HTTPS). W tym celu należy najpierw powiązać odpowiedni certyfikat X.509 z określonym portem na komputerze hostujący usługę. (Aby uzyskać więcej informacji, zobacz Praca z certyfikatami). Po drugie dodaj ten element do konfiguracji usługi i ustaw httpsGetEnabled atrybut na true. Na koniec ustaw httpsGetUrl atrybut na adres URL punktu końcowego metadanych usługi, jak pokazano w poniższym przykładzie.
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceMetadata httpsGetEnabled="true"
httpsGetUrl="https://myComputerName/myEndpoint" />
</behavior>
</serviceBehaviors>
</behaviors>
Example
Poniższy przykład umożliwia skonfigurowanie usługi w celu uwidocznienia metadanych przy użyciu <elementu serviceMetadata> . Konfiguruje również punkt końcowy w celu uwidocznienia kontraktu IMetadataExchange jako implementacji protokołu WS-MetadataExchange (MEX). W przykładzie mexHttpBindingużyto klasy , która jest standardowym powiązaniem wygody, które jest równoważne wsHttpBinding z ustawieniem trybu zabezpieczeń na Nonewartość . Względny adres "mex" jest używany w punkcie końcowym, który po rozpoznaniu względem adresu podstawowego usług powoduje adres punktu końcowego http://localhost/servicemodelsamples/service.svc/mex.
<configuration>
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by the host: http://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex
To expose the IMetadataExchange contract, you must enable the serviceMetadata behavior as demonstrated below. -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<!-- The serviceMetadata behavior publishes metadata through the IMetadataExchange contract. When this behavior is
present, you can expose this contract through an endpoint as shown above. Setting httpGetEnabled to true publishes
the service's WSDL at the <baseaddress>?wsdl eg. http://localhost/servicemodelsamples/service.svc?wsdl -->
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>