2017-07-27 4 views

Antwort

1

Diese Frage wollte ich schon sehr lange wissen und stieß schließlich auf die Lösung, die ich auf der MSDN-Website von Microsoft brauchte. Ich wünschte nur, ich hätte es früher gefunden. Ich werde die Antwort und den Link unten zur Verfügung stellen.

Verwenden Sie die System.ServiceModel.Description OperationDescription-Klasse.

Ich bekomme meine ServiceHost so in meinem Code.

Uri baseAddress = new Uri(OperationContext.Current.Host.BaseAddresses[0].AbsoluteUri); 
ServiceHost sh = new ServiceHost(typeof(MyWebServiceClass), baseAddress); 

Der folgende Code ist aus Microsoft MSDN documentation und tut genau das, was ich brauche.

private void PrintDescription(ServiceHost sh) 
{ 
    // Declare variables. 
    int i, j, k, l, c; 
    ServiceDescription servDesc = sh.Description; 
    OperationDescription opDesc; 
    ContractDescription contractDesc; 
    MessageDescription methDesc; 
    MessageBodyDescription mBodyDesc; 
    MessagePartDescription partDesc; 
    IServiceBehavior servBeh; 
    ServiceEndpoint servEP; 

    // Print the behaviors of the service. 
    Console.WriteLine("Behaviors:"); 
    for (c = 0; c < servDesc.Behaviors.Count; c++) 
    { 
     servBeh = servDesc.Behaviors[c]; 
     Console.WriteLine("\t{0}", servBeh.ToString());     
    } 

    // Print the endpoint descriptions of the service. 
    Console.WriteLine("Endpoints"); 
    for (i = 0; i < servDesc.Endpoints.Count; i++) 
    { 
     // Print the endpoint names. 
     servEP = servDesc.Endpoints[i]; 
     Console.WriteLine("\tName: {0}", servEP.Name); 
     contractDesc = servEP.Contract; 

     Console.WriteLine("\tOperations:"); 
     for (j = 0; j < contractDesc.Operations.Count; j++) 
     { 
      // Print the operation names. 
      opDesc = servEP.Contract.Operations[j]; 
      Console.WriteLine("\t\t{0}", opDesc.Name); 
      Console.WriteLine("\t\tActions:"); 
      for (k = 0; k < opDesc.Messages.Count; k++) 
      { 
       // Print the message action. 
       methDesc = opDesc.Messages[k]; 
       Console.WriteLine("\t\t\tAction:{0}", methDesc.Action); 

       // Check for the existence of a body, then the body description. 
       mBodyDesc = methDesc.Body; 
       if (mBodyDesc.Parts.Count > 0) 
       { 
        for (l = 0; l < methDesc.Body.Parts.Count; l++) 
        { 
         partDesc = methDesc.Body.Parts[l]; 
         Console.WriteLine("\t\t\t\t{0}",partDesc.Name); 
        } 
       } 
      } 
     } 
    } 
} 
+0

Danke für das Teilen! Bitte geben Sie die tatsächlichen Links zu den relevanten Quellenmaterialien an. –

+0

Mein Vergnügen. Es ist in der Antwort über dem Hauptcodeblock. –

Verwandte Themen