2009-02-13 11 views

risposta

67

Se ricordo correttamente, le variabili UriTemplate nel percorso vengono sempre risolte in stringhe quando si utilizza WebGet o WebInvoke. È possibile associare solo le variabili UriTemplate a int, long e così via quando si trovano nella porzione di query di UriTemplate.

+0

Sto usando una matrice seghettata e sta mostrando questo messaggio. C'è un modo per passare l'array frastagliato ai parametri? Lo sto facendo come questo 'string MyMethod (string [] [] jaggedArray);' – CodeIt

3

Sfortunatamente è necessario eseguire l'analisi autonomamente se si desidera utilizzare UriTemplate.

72

Come descritto da dthrasher, spostare id nella parte di query dell'URI. Questo ha funzionato per me: "schema URI"

[OperationContract] 
[WebGet(UriTemplate = "/foo?id={id}")] 
string GetFoo(int id); 

Trova sulla Wikipedia per ulteriori informazioni circa le diverse parti di un URI: http://en.wikipedia.org/wiki/URI_scheme

+0

Grazie! Ciò rimuove anche il req per i parametri in un ordine specifico. – Jerry

+3

Grazie per aver fornito un esempio. – Cody

+0

Grazie funziona –

4

Come altri hanno detto, è necessario utilizzare stringhe di query per passare non -stringa parametri. Il seguente articolo spiega come è fatto l'analisi.

WCF Extensibility – QueryStringConverter

Tornando alla “propria” WCF estensibilità, post di questa settimana è di circa il QueryStringConverter. Questo è in realtà un argomento semplice da coprire, come il suo scopo è piuttosto specifico (a differenza di altri punti di estendibilità visto prima, che potrebbero essere utilizzati per una vasta gamma di casi) - entro WCF il QueryStringConverter viene utilizzato solo sugli endpoint a cui è stato applicato il comportamento WebHttp . E anche in quelle, solo su operazioni che hanno parametri passati attraverso le stringhe di query (sia operazioni con i parametri contrassegnati con [WebGet] o un'operazione [WebInvoke] con un UriTemplate che si lega in modo esplicito alcuni parametri per la stringa di query) . Una QueryStringConverter è il pezzo che può convertire tra parametri di funzionamento e la loro rappresentazione in una stringa di query.

...

Il QueryStringConverter predefinita utilizzata dal WebHttpBehavior supporta nativamente diversi tipi, tra cui tutti i tipi numerici semplici (Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, singolo, doppie, decimale), booleano, Char, oggetto, String, DateTime, DateTimeOffset, TimeSpan, Guid, Uri, e matrici di byte (sostanzialmente, tutti i tipi che il DataContractSerializer considera “primitivi”, con la eccezione di XmlQualifiedName). tipi enumerazione sono anche supportato per default (la rappresentazione di stringa dei valori enum vengono utilizzati ). Infine, vi è un altro gruppo di tipi supportati dal QueryStringConverter predefinito, ovvero uno che dichiara un attributo [TypeConverter] con un convertitore di tipi in grado di convertire il tipo in stringhe (ulteriori informazioni in seguito).

Problemi correlati