public async Task <HttpResponseMessage> HandleRequestAsync(FunctionDescriptor function, HttpRequestMessage request, CancellationToken cancellationToken) { // All authentication is assumed to have been done on the request // BEFORE this method is called Dictionary <string, object> arguments = await GetFunctionArgumentsAsync(function, request); // Suspend the current synchronization context so we don't pass the ASP.NET // context down to the function. using (var syncContextSuspensionScope = new SuspendedSynchronizationContextScope()) { await Instance.CallAsync(function.Name, arguments, cancellationToken); } // Get the response HttpResponseMessage response = null; if (!request.Properties.TryGetValue <HttpResponseMessage>("MS_AzureFunctionsHttpResponse", out response)) { // the function was successful but did not write an explicit response response = new HttpResponseMessage(HttpStatusCode.OK); } return(response); }
public async Task <HttpResponseMessage> HandleRequestAsync(FunctionDescriptor function, HttpRequestMessage request, CancellationToken cancellationToken) { // ensure that the host is ready to process requests await DelayUntilHostReady(_hostTimeoutSeconds, _hostRunningPollIntervalMilliseconds); // All authentication is assumed to have been done on the request // BEFORE this method is called var arguments = GetFunctionArguments(function, request); // Suspend the current synchronization context so we don't pass the ASP.NET // context down to the function. using (var syncContextSuspensionScope = new SuspendedSynchronizationContextScope()) { // Add the request to the logging scope. This allows the App Insights logger to // record details about the request. ILoggerFactory loggerFactory = _config.HostConfig.GetService <ILoggerFactory>(); ILogger logger = loggerFactory.CreateLogger(LogCategories.Function); var scopeState = new Dictionary <string, object>() { [ScriptConstants.LoggerHttpRequest] = request }; using (logger.BeginScope(scopeState)) { await Instance.CallAsync(function.Name, arguments, cancellationToken); } } // Get the response HttpResponseMessage response = null; if (!request.Properties.TryGetValue <HttpResponseMessage>(ScriptConstants.AzureFunctionsHttpResponseKey, out response)) { // the function was successful but did not write an explicit response response = new HttpResponseMessage(HttpStatusCode.OK); } return(response); }
public async Task<HttpResponseMessage> HandleRequestAsync(FunctionDescriptor function, HttpRequestMessage request, CancellationToken cancellationToken) { // All authentication is assumed to have been done on the request // BEFORE this method is called Dictionary<string, object> arguments = GetFunctionArguments(function, request); // Suspend the current synchronization context so we don't pass the ASP.NET // context down to the function. using (var syncContextSuspensionScope = new SuspendedSynchronizationContextScope()) { await Instance.CallAsync(function.Name, arguments, cancellationToken); } // Get the response HttpResponseMessage response = null; if (!request.Properties.TryGetValue<HttpResponseMessage>(ScriptConstants.AzureFunctionsHttpResponseKey, out response)) { // the function was successful but did not write an explicit response response = new HttpResponseMessage(HttpStatusCode.OK); } return response; }