Nein, nicht wirklich - weil der String-Parameter searchType
NULL sein kann - Sie haben also wirklich keine Möglichkeit, die beiden URL-Vorlagen zu unterscheiden. Anders wäre es, wenn Sie einen nicht nullbaren Typ verwenden, wie zB INT
oder etwas - dann könnten Sie (und die .NET-Laufzeitumgebung) die beiden URL-Vorlagen auseinander halten (basierend darauf, ob INT vorhanden ist oder nicht) ).
Was Sie tun müssen, ist nur zu überprüfen, ob searchType
leer ist oder NULL in Ihrer GetSearchResults
-Methode, und entsprechend handeln.
und in Ihrer Implementierung:
%Vor%Ich habe dies erreicht, indem ich STREAM verwendet habe, um Daten vom Client zu übergeben. Sie können sogar 2 Operationen mit demselben Namen aber unterschiedlichen Methodennamen haben. Stellen Sie sicher, dass contentType als "text / javascript" ODER "application / octet-stream" eingestellt ist. und versuchen Sie, Daten als POST aus HTML oder in Datenvariablen zu senden, wenn Sie AJAX oder jQuery
verwendenZum Beispiel [OperationVertrag] [WebInvoke (Methode="PUT", UriTemplate="Benutzer / ID / {ID} /", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] String UpdateUser (Zeichenfolge-ID, System.IO.Stream-Stream);
[OperationKontrakt] [WebInvoke (Methode="DELETE", UriTemplate="Benutzer / ID / {ID} /", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] Zeichenfolge DeleteUser (Zeichenfolge-ID);
ODER ersetzen Sie PUT und DELETE für GET und POST
Tags und Links wcf uritemplate