2011-11-04 10 views
5

ho un problema di fronte con la mia implementazione servicestack, devo fare seguenti richieste di URL di chiamare il mio servizio e implementato un perfmon classe classe & perfmonserviceHai bisogno di aiuto sull'attuazione servicestack

[RestService("/perfmon/application/{appliationId}")] 
    [RestService("/perfmon/application/{appliationId}/{countername}")] 
    [RestService("/perfmon/user/{userId}")] 
    [RestService("/perfmon/user/{userId}/{countername}")] 

Ora, quando io chiamerò una delle URL sarebbe chiamare seguente funzione

public override object OnGet(Perfmon request) 
     {     
       return base.OnGet(request); 
     } 

così come posso decidere qui ciò che ha reso URL questa chiamata, tempo servicestack forniscono alcun modo specifico di fare questo o ho bisogno di scrivere la logica manuale controllando le proprietà?

Grazie in anticipo

risposta

5

Basta esaminare la richiesta DTO per vedere quali campi sono popolate, cioè

if (request.applicationId != null && request.countername != null) #2 
if (request.userId != null && request.countername != null) #4 
if (request.applicationId != null) #1 
if (request.userid != null) #3 

Si noti inoltre che l'utente può popolare il dto richiesta con querystring così, cioè se ti ho chiamato con:

/perfmon/application/1/countername?userId=2 

Quindi tutti i campi verranno popolati. Infine è possibile recuperare informazioni relative alla richiesta di come l'URI assoluto usato per chiamare la richiesta con:

base.RequestContext.AbsoluteUri 

Infine è possibile ottenere l'oggetto in sé IHttpRequest con:

var httpReq = base.Request; //or with base.RequestContext.Get<IHttpRequest>(); 
+0

Grazie per il vostro aiuto –

Problemi correlati