2011-11-04 12 views
5

que un problema que enfrentan con mi aplicación servicestack, tengo hacer siguientes peticiones de URL para llamar a mi servicio e implementado un Monitor de rendimiento de clase de clase & perfmonservicenecesita ayuda en la aplicación servicestack

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

Ahora, cuando voy a llamar a cualquiera de los URL sería llamar a la función siguiente

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

así que ¿cómo puedo decidir qué URL aquí que hizo esta llamada, servicestack tiempo proporciona ninguna forma específica de hacer esto o tengo que escribir la lógica Manual comprobando las propiedades?

Gracias de antemano

Respuesta

5

Sólo inspeccionar la solicitud DTO para ver qué campos están pobladas, es decir

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 

También tenga en cuenta que el usuario puede rellenar el dto solicitud con la cadena de consulta, así, es decir, si lo llamó con:

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

Luego se completarán todos los campos. Por último se puede recuperar información acerca de la solicitud con el URI absoluta como solía llamar a la petición con:

base.RequestContext.AbsoluteUri 

Por último se puede obtener el objeto en sí IHttpRequest con:

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

Gracias por su ayuda –

Cuestiones relacionadas