Ich habe eine ganze Reihe von Webdiensten mit jeweils mehreren Webmethoden. Die Verbraucher dieser Dienste sind vielfältig und viele. Ich möchte jede dieser Webmethoden mit einem zusätzlichen optionalen Parameter (Int64 oder Int32) ergänzen, aber das Hinzufügen neuer Methoden mit diesem zusätzlichen (optionalen Parameter) ist eine Menge Arbeit und es wird noch zeitaufwändiger, die Clients dazu zu bringen, die neuen Methoden zu verwenden .
Ich habe mich also gefragt, ob ich den Clients erlauben könnte, die Vorteile der neuen Funktion zu nutzen, die dieser Parameter bietet, diese Int im HTTP-Header oder auf andere Weise weitergeben könnte.
Also die erste Frage ist, kann ich einen Int im HTTP-Header übergeben? Wenn ja, wie würde man das in C # / ASP.NET machen?
Sonst, welche anderen Vorschläge haben Sie, um dieses Problem anzugehen?
Es ist ein bisschen unorthodox und ich bin sicher, dass einige Puristen sich über die Idee aufregen würden (die Header sollten nur für den Transport der Nachricht verwendet werden und sollten nicht die Semantik der Nachricht enthalten).
Praktisch machbar, aber Sie möchten sicher sein, dass alle Ihre Kunden diese Header hinzufügen können. Wenn Clients Tools verwenden, um die Webmethoden aufzurufen, anstatt die HTTP-Anforderungen selbst zu generieren (was ich hoffe, dass dies der Fall ist), besteht die reale Möglichkeit, dass dies ein Problem ist.
Warum ist es so schwer, diese zusätzlichen Überladungen der Methoden hinzuzufügen?
Ja, es ist erlaubt - aber beachte, dass es die Fähigkeit zur Verwendung von Proxies und manchmal http-fähigen Firewalls (sie neigen dazu, Header zu inspizieren und neu zu schreiben) einschränken kann.
Ich habe dieses Konzept einmal verwendet, um Abmeldung Redirect für Ajax Anrufe in einer Intranet-Web-Anwendung (nichts mit Web-Service verwandt) zu behandeln.
Es war meine beste Lösung zur Hand, aber wie einige andere gesagt haben, hängt es davon ab, ob Sie die Beschränkung auf Clients schieben können, um diese Header für Ihren Zweck zu behandeln.
Definitiv nichts, was Sie standardmäßig tun möchten.
Sie können, aber Sie müssen einen Header definieren und dann seinen Wert festlegen. Wie in der HttpWebRequest können Sie einen beliebigen Header hinzufügen, so lange wie er ist nicht einer der reservierten.
Beachten Sie, dass es zwar möglich ist, benutzerdefinierte Header in ASP.NET zu verwenden, es jedoch nicht immer möglich ist, benutzerdefinierte Header in ASP.NET zu erstellen. Dies ist nur möglich, wenn Sie den integrierten ASP.NET-Modus (z. B. IIS 7.0) ausführen.
Sie können das, aber das macht den gesamten Zweck der Verwendung von Webservices zunichte. Ähnlich wie das Sprichwort, dass jede Formel in einem populären Wissenschaftsbuch das Publikum auf die Hälfte reduziert, wird jeder schnelle Hack, der die Komplexität der Schnittstelle erhöht, in der Zukunft eine Menge Ärger bedeuten.
Tags und Links http-headers