public override void ProcessRequest(ICommunicationContext ctx) { // Read post data which is expected to be JSON string args; using(var reader = new StreamReader(ctx.Request.InputStream, ctx.Request.ContentEncoding)) { args = reader.ReadToEnd(); } var className = GetClassName(ctx); var methodName = GetMethodName(ctx); var dataListID = GetDataListID(ctx); var workspaceID = GetWorkspaceID(ctx); dynamic result; try { Guid workspaceGuid; Guid.TryParse(workspaceID, out workspaceGuid); Guid dataListGuid; Guid.TryParse(dataListID, out dataListGuid); // // NOTE: result.ToString() MUST return JSON // // Ensure we execute as the correct user ;) var userPrinciple = ctx.Request.User; if(userPrinciple != null) { Thread.CurrentPrincipal = userPrinciple; Dev2Logger.Log.Info("WEB EXECUTION USER CONTEXT [ " + userPrinciple.Identity.Name + " ]"); } result = _serviceInvoker.Invoke(className, methodName, args, workspaceGuid, dataListGuid); } catch(Exception ex) { result = new ValidationResult { ErrorMessage = ex.Message }; } ctx.Send(new StringResponseWriter(result.ToString(), ContentTypes.Json)); }
public override void ProcessRequest(ICommunicationContext ctx) { // Read post data which is expected to be JSON string args; using(var reader = new StreamReader(ctx.Request.InputStream, ctx.Request.ContentEncoding)) { args = reader.ReadToEnd(); } var className = GetClassName(ctx); var methodName = GetMethodName(ctx); var dataListID = GetDataListID(ctx); var workspaceID = GetWorkspaceID(ctx); dynamic result = null; var userPrinciple = ctx.Request.User; Thread.CurrentPrincipal = userPrinciple; try { Guid workspaceGuid; Guid.TryParse(workspaceID, out workspaceGuid); Guid dataListGuid; Guid.TryParse(dataListID, out dataListGuid); Thread.CurrentPrincipal = userPrinciple; Dev2Logger.Log.Info("WEB EXECUTION USER CONTEXT [ " + userPrinciple.Identity.Name + " ]"); Common.Utilities.PerformActionInsideImpersonatedContext(userPrinciple, () => { result = _serviceInvoker.Invoke(className, methodName, args, workspaceGuid, dataListGuid); }); } catch(Exception ex) { result = new ValidationResult { ErrorMessage = ex.Message }; } if(result != null) { ctx.Send(new StringResponseWriter(result.ToString(), ContentTypes.Json)); } }