Wenn ich einen WCF-Dienst, der eine Methode enthält, die so aussieht ...Warum haben seine Parameter der WCF-Service-Methode nicht
[OperationContract]
public void Jim(int ID) {
// DO SOMETHING HERE
}
... und ich diese verwenden Methode in einem Client, alles funktioniert gut.
Wenn ich den Parameter der Servicemethode nachträglich in id
umbenenne, dann wird der Parameter beim Aufruf der Servicemethode nicht gesetzt und hat den Wert Null.
Wenn ich dann die Service-Referenz im Client neu generieren, wird der Parameter korrekt festgelegt.
Was ich nicht verstehe ist, warum dies teilweise funktioniert. Ich hätte erwartet, dass es vollständig funktioniert (dh den Parameter auf den richtigen Wert gesetzt hat) oder mit einer Ausnahme fehlschlägt.
Wenn die eingehende Anforderung als die gleiche Methode erkannt wurde, sollte sie den Parameternamen erkannt und den Wert festgelegt haben. Wenn es nicht mit den Parameternamen übereinstimmt, sollte es als eine andere Methode angesehen worden sein und eine Ausnahme ausgelöst haben, dass die gewünschte Methode fehlte. Ich verstehe nicht, warum es die richtige Methode aufgerufen hat, aber nicht den Parameterwert.
Kann mir jemand das erklären?
@codechum Danke, aber basierend darauf (was ich eigentlich erwartet hätte), hätte ich gedacht, dass die Methode mit dem Parameter namens id als eine andere Methode als die mit angesehen wurde der Parameter namens ID bedeutet, dass ich eine fehlende Methodenausnahme erhalten hätte. Ich verstehe nicht, wie es mit der Methode übereinstimmt, aber nicht mit dem Parameter übereinstimmt. –
@AvrohomYisroel erhalten Sie keine fehlende Methodenausnahme. Die Parameterwerte der Methode sind nur ein Teil der Nachricht. Ihre Clientdefinition der Methode besagt, dass der Parametername "id" ist; Ihr Server sagt, dass der Parametername "ID" ist.Wenn der Client die 'Jim'-Operation des Servers aufruft, wird er die' id = 1 'übergeben; Wenn der Server jedoch die Nachricht betrachtet, sucht er explizit nach ID =. Beachten Sie die Falldifferenz. –
codechurn
@codechum Danke für die Erklärung. Sieht immer noch etwas komisch aus, aber ich denke, ich verstehe, warum es so funktioniert. Ich hätte gedacht, sie hätten es anders gemacht, aber sie haben mich nicht gefragt! Wenigstens weiß ich, was jetzt passiert ist. –