Wie erhalten Sie Ihre WCF-Schnittstelle Definition Endpunkte, Vorgänge und Parameter programmgesteuert in Ihrem Code verwenden?Wie durchlaufen WCF-Schnittstelle Definition Endpunkte, Vorgänge und Parameter
0
A
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);
}
}
}
}
}
}
Verwandte Themen
- 1. Dateibehandlung: Textdatei durchlaufen und kontinuierlich Parameter vergleichen
- 2. WCF, IIS und Endpunkte
- 3. SOAP DSAPI.ASMX und API.ASMX Endpunkte
- 4. Mehrere Erstellungsanforderungen für Vorgänge
- 5. Cloud-Endpunkte und App Engine
- 6. Java - Wie binäre Suchbaum rekursiv ohne Parameter durchlaufen
- 7. Kubernetes bekommen Endpunkte
- 8. 'SqlConnection' enthält keine Definition für 'Parameter'
- 9. RAML Definition wiederverwendbare Unterroute
- 10. Wie wird eine Hashtabelle durchlaufen?
- 11. Wie alle Endpunkte von Frühjahr
- 12. Fordert MongoDB clientseitige Vorgänge ab?
- 13. Wie durchlaufen SQL und drucken Ausgabezeit
- 14. newtype und rekursive Definition
- 15. Boost.Asio: Zeitüberschreitung für asynchrone Vorgänge
- 16. Spring Boot ldap group und eingeschränkte Endpunkte
- 17. Silverlight, Bereitstellung, Ports, domänenübergreifende Richtlinien und Endpunkte
- 18. Closure Definition und Beispiel
- 19. Vorläufige Definition und Speicherzuweisung
- 20. Wie durchlaufen Unicode-Zeichen?
- 21. Hosting WCF Seife und Ruhe Endpunkte nebeneinander
- 22. Wie AST-Baum durchlaufen
- 23. Datei durchlaufen und eine API-Anfrage ausführen
- 24. Datenbank durchlaufen und in Tabelle
- 25. CucumberJs überspringen Schritt Definition - vielleicht Callback letzten Parameter in Schritt Definition?
- 26. Dynamisches Routing in Kolben und Reihenfolge der Vorgänge beim Routen
- 27. Virtuoso SPARQL Endpunkte Inferenzregeln
- 28. Wie erstellen Sie Merge-Vorgänge ähnlich wie bei Quora-Themen?
- 29. Ich muss 16 Parameter zu einer Methode wiederholt mal durchlaufen
- 30. Azure + Ubuntu VM + Endpunkte
Danke für das Teilen! Bitte geben Sie die tatsächlichen Links zu den relevanten Quellenmaterialien an. –
Mein Vergnügen. Es ist in der Antwort über dem Hauptcodeblock. –