public static void ProcessedRequestHandler(object source, DataServiceProcessingPipelineEventArgs args) { TraceHelper.Current.DebugMessage("QuotaSystem.ProcessedRequestHandler entered"); if (args != null) { args.OperationContext.Trace(); } UserContext userContext = new UserContext(CurrentRequestHelper.Identity, CurrentRequestHelper.Certificate); if (DataServiceController.Current.IsRequestProcessingStarted(userContext)) { try { DataServiceController.Current.SetRequestProcessingState(userContext, false); UserDataCache.UserDataEnvelope userDataEnvelope = DataServiceController.Current.UserDataCache.Get(userContext); using (userDataEnvelope) { userDataEnvelope.Data.Usage.RequestProcessed(); } TraceHelper.Current.RequestProcessingEnd(); } finally { DataServiceController.Current.UserDataCache.TryUnlockKey(userContext); TraceHelper.Current.DebugMessage("QuotaSystem.ProcessedRequestHandler exited"); } return; } else { TraceHelper.Current.DebugMessage("QuotaSystem.ProcessedRequestHandler IsRequestProcessingStarted returned false"); return; } }
public static void ProcessedRequestHandler(object sender, DataServiceProcessingPipelineEventArgs e) { ProcessedRequestInvokeCount++; e.OperationContext.ResponseHeaders["ProcessedRequestInvokeCount"] = ProcessedRequestInvokeCount.ToString(); if (CheckInvokeCount) { Assert.AreEqual(1, ProcessingRequestInvokeCount); if (!e.OperationContext.IsBatchRequest) { if (e.OperationContext.RequestMethod == "GET") { Assert.AreEqual(0, ProcessingChangesetInvokeCount); Assert.AreEqual(0, ProcessedChangesetInvokeCount); } else { Assert.AreEqual(1, ProcessingChangesetInvokeCount); Assert.AreEqual(1, ProcessedChangesetInvokeCount); } } Assert.AreEqual(1, ProcessedRequestInvokeCount); } }
protected virtual void OnProcessedRequest(object sender, DataServiceProcessingPipelineEventArgs e) { // Commit UnitOfWork, this should not be call when have exception if (this.transaction != null) { this.transaction.Commit(); } }
public void ProcessedRequest(object sender, DataServiceProcessingPipelineEventArgs e) { this.Parent.Add("DataServiceProcessingPipeline.ProcessedRequest", "sender", sender.GetType().Name, "AbsoluteRequestUri", e.OperationContext.AbsoluteRequestUri.ToString(), "AbsoluteServiceUri", e.OperationContext.AbsoluteServiceUri.ToString(), "IsBatchRequest", e.OperationContext.IsBatchRequest.ToString(), "RequestMethod", e.OperationContext.RequestMethod.ToUpperInvariant()); // TODO: headers? }
void ProcessingPipeline_ProcessingRequest(object sender, DataServiceProcessingPipelineEventArgs e) { HttpRequest req = HttpContext.Current.Request; if (req.HttpMethod == "POST" && req.PathInfo == @"/GetCustomerNames") { StreamReader reader = new StreamReader(req.InputStream); string body = reader.ReadToEnd(); } }
void ProcessingPipeline_ProcessingRequest(object sender, DataServiceProcessingPipelineEventArgs e) { if (!HttpContext.Current.Request.ClientCertificate.IsPresent) { throw new DataServiceException(401, "401 Unauthorized"); } var cert = new X509Certificate2(HttpContext.Current.Request.ClientCertificate.Certificate); if (!ValidateCertificate(cert)) { throw new DataServiceException(401, "401 Unauthorized"); } var identity = new GenericIdentity(cert.Subject, "ClientCertificate"); var principal = new GenericPrincipal(identity, null); Thread.CurrentPrincipal = principal; HttpContext.Current.User = principal; }
public static void ProcessingRequestHandler(object source, DataServiceProcessingPipelineEventArgs args) { UserData userDatum = null; TraceHelper.Current.DebugMessage("QuotaSystem.ProcessingRequestHandler entered"); if (args != null && args.OperationContext != null) { TraceHelper.CorrelateWithClientRequestId(args.OperationContext); } UserContext userContext = new UserContext(CurrentRequestHelper.Identity, CurrentRequestHelper.Certificate); if (!DataServiceController.Current.IsRequestProcessingStarted(userContext)) { UserDataCache.UserDataEnvelope userDataEnvelope = DataServiceController.Current.UserDataCache.Get(userContext); using (userDataEnvelope) { UserQuota userQuota = DataServiceController.Current.GetUserQuota(userContext); if (args != null) { Guid activityId = EtwActivity.GetActivityId(); args.OperationContext.ResponseHeaders.Add("request-id", activityId.ToString()); } if (userDataEnvelope.Data.Usage.QuotaCheckAndUpdate(userContext, userQuota)) { DataServiceController.Current.UserDataCache.TryLockKey(userContext, out userDatum); } else { throw new DataServiceException(0x193, ExceptionHelpers.GetDataServiceExceptionMessage(HttpStatusCode.Forbidden, Resources.UserQuotaExceeded, new object[0])); } } DataServiceController.Current.SetRequestProcessingState(userContext, true); TraceHelper.Current.RequestProcessingStart(); DataServiceController.Current.UserDataCache.Trace(); TraceHelper.Current.DebugMessage("QuotaSystem.ProcessingRequestHandler exited"); return; } else { TraceHelper.Current.DebugMessage("QuotaSystem.ProcessingRequestHandler IsRequestProcessingStarted returned true"); return; } }
/// <summary> /// Limits allowable paths to /ValidationJobs(id), /ValidationJobs(id)/TestResults, /ValidationJobs(id)/PayloadLines /// This path scoping is done such that users cannot query on information not relevant to the job they submitted. /// Finally, this disallows use of $filter for now to limit cost per request /// </summary> /// <param name="sender">sender</param> /// <param name="e">e</param> private void ProcessingPipeline_ProcessingRequest(object sender, DataServiceProcessingPipelineEventArgs e) { int i; for (i = 0; i < e.OperationContext.AbsoluteRequestUri.Segments.Length; i++) { if (e.OperationContext.AbsoluteRequestUri.Segments[i].ToUpperInvariant().StartsWith(ServiceName, StringComparison.OrdinalIgnoreCase)) { break; } } // i at index of segment immediately after the service root segment i++; if (i < e.OperationContext.AbsoluteRequestUri.Segments.Length && !e.OperationContext.AbsoluteRequestUri.Segments[i].ToUpperInvariant().StartsWith("ExtValidationJobs", StringComparison.OrdinalIgnoreCase) && !e.OperationContext.AbsoluteRequestUri.Segments[i].ToUpperInvariant().StartsWith("validationjobs", StringComparison.OrdinalIgnoreCase) && !e.OperationContext.AbsoluteRequestUri.Segments[i].ToUpperInvariant().StartsWith("$metadata", StringComparison.OrdinalIgnoreCase) && !e.OperationContext.AbsoluteRequestUri.Segments[i].ToUpperInvariant().StartsWith("UriValidationJobs", StringComparison.OrdinalIgnoreCase) && !e.OperationContext.AbsoluteRequestUri.Segments[i].ToUpperInvariant().StartsWith("ConformanceRerunJob", StringComparison.OrdinalIgnoreCase) && !e.OperationContext.AbsoluteRequestUri.Segments[i].ToUpperInvariant().StartsWith("SimpleRerunJob", StringComparison.OrdinalIgnoreCase) && !e.OperationContext.AbsoluteRequestUri.Segments[i].ToUpperInvariant().StartsWith("TestResults", StringComparison.OrdinalIgnoreCase) && !e.OperationContext.AbsoluteRequestUri.Segments[i].ToUpperInvariant().StartsWith("Records", StringComparison.OrdinalIgnoreCase) && !e.OperationContext.AbsoluteRequestUri.Segments[i].ToUpperInvariant().StartsWith("Reload", StringComparison.OrdinalIgnoreCase) ) { throw new DataServiceException(400, "Test result and payload line sets must be accessed via an associated validation job"); } // for now limiting complexity of queries the service is willing to run if (e.OperationContext.AbsoluteRequestUri.Query != null && e.OperationContext.AbsoluteRequestUri.Query.Contains("$filter")) { throw new DataServiceException(400, "This service does not currently support $filter requests"); } }
protected virtual void OnProcessingRequest(object sender, DataServiceProcessingPipelineEventArgs dataServiceProcessingPipelineEventArgs) { // Begin UnitOfWork this.transaction = this.personContext.Database.BeginTransaction(); }
private static void APICallLog_ProcessedRequest(object sender, DataServiceProcessingPipelineEventArgs e) { APICallLog.Current.ProcessingPipeline.ProcessedRequest(sender, e); APICallLog.Current.Pop(); }
void ProcessingPipeline_ProcessingRequest(object sender, DataServiceProcessingPipelineEventArgs e) { var name = HttpContext.Current.User.Identity.Name; //if (!HttpContext.Current.Request.IsAuthenticated) // throw new DataServiceException(401, "401 Unauthorized"); }
protected static void ProcessedRequestListener(object caller, DataServiceProcessingPipelineEventArgs args) { ModifyHeadersScenarioTests.OverwriteHeaders(args.OperationContext); }