ServiceMetadataBehavior.HttpGetEnabled Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define um valor que indica se os metadados de serviço devem ser publicados para recuperação usando uma solicitação HTTP/GET.
public:
property bool HttpGetEnabled { bool get(); void set(bool value); };
public bool HttpGetEnabled { get; set; }
member this.HttpGetEnabled : bool with get, set
Public Property HttpGetEnabled As Boolean
Valor da propriedade
true
se o WSDL tiver sido publicado; caso contrário, false
. O padrão é false
.
Exemplos
O exemplo de código a seguir demonstra o uso de um arquivo de ServiceMetadataBehavior configuração para habilitar o suporte a metadados para solicitações HTTP/GET e WS-Transfer/GET.
// Create a new metadata behavior object and set its properties to
// create a secure endpoint.
ServiceMetadataBehavior sb = new ServiceMetadataBehavior();
//sb.EnableHelpPage= true;
//sb.HttpsGetUrl = new Uri("https://myMachineName:8036/myEndpoint");
//myServiceHost.Description.Behaviors.Add(sb);
}
private void SnippetServiceMetadataBehavior()
{
// service for which <<indigo2>> automatically adds a
// ServiceMetadataBehavior to publish metadata as well as
// an HTML service help page
// from C_HowToSecureEndpoint\cs
// Create a new metadata behavior object and set its properties to
// create a secure endpoint.
ServiceMetadataBehavior sb = new ServiceMetadataBehavior();
/* sb.EnableHelpPage = true;
sb.enableMetadataExchange = true;
sb.HttpsGetUrl = new Uri("https://myMachineName:8036/myEndpoint");
myServiceHost.Description.Behaviors.Add(sb);
*/
}
private void Run()
{
// T:System.ServiceModel.ServiceMetadataBehavior
// <Snippet#0>
// Create a ServiceHost for the service type and use the base address from configuration.
ServiceHost host = new ServiceHost(typeof(SampleService));
try
{
ServiceMetadataBehavior metad
= host.Description.Behaviors.Find<ServiceMetadataBehavior>();
if (metad == null)
metad = new ServiceMetadataBehavior();
metad.HttpGetEnabled = true;
host.Description.Behaviors.Add(metad);
host.AddServiceEndpoint(
ServiceMetadataBehavior.MexContractName,
MetadataExchangeBindings.CreateMexHttpBinding(),
"mex"
);
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
host.Close();
// </Snippet#0>
Comentários
Se o valor for HttpGetUrl relativo, o endereço no qual os metadados são publicados é o endereço base e o endereço de serviço, além de uma ?wsdl
consulta.
Se o valor for HttpGetUrl absoluto, o endereço no qual os metadados são publicados será o valor do HttpGetUrl valor mais uma ?wsdl
consulta.
Por exemplo, se o endereço de serviço for http://localhost:8080/CalculatorService
e for HttpGetUrl uma cadeia de caracteres vazia, o endereço de metadados HTTP/GET será http://localhost:8080/CalculatorService?wsdl
.
Se você não habilitar essa propriedade e não alterá-la HttpGetUrl ou defini-la como um endereço relativo, uma exceção será lançada no runtime quando o host de serviço for aberto sem um endereço base para HTTP.