protected internal virtual IAsyncResult BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, object state) { IHttpHandler requestHandler = GetHttpHandler(httpContext); BeginProcessRequestDelegate beginCallback; AsyncCallback endCallback; IHttpAsyncHandler asyncHandler = requestHandler as IHttpAsyncHandler; if (asyncHandler != null) { beginCallback = asyncHandler.BeginProcessRequest; endCallback = asyncHandler.EndProcessRequest; } else { // execute synchronous IHttpHandler asynchronously ProcessRequestDelegate processRequestDelegate = hc => SynchronizationContext.Sync(() => requestHandler.ProcessRequest(hc)); beginCallback = processRequestDelegate.BeginInvoke; endCallback = processRequestDelegate.EndInvoke; } return(AsyncResultWrapper.Wrap(callback, state, (innerCallback, innerState) => beginCallback(HttpContext.Current, innerCallback, innerState), endCallback, _processRequestTag)); }
public void Load() { CheckInstallPath(); string strVersion = (string)ConfigurationManager.AppSettings["MapSurfer.Version"]; AssemblyLoader.Register(strVersion); Assembly assembly = AssemblyLoader.LoadAssembly("MapSurfer.Web.dll"); if (assembly == null) throw new FileNotFoundException("MapSurfer.Web.dll"); string typeName = "MapSurfer.Web.Services.MappingService"; object[] args = new object[] { (string)ConfigurationManager.AppSettings["MapSurfer.ServiceName"] }; try { m_mapService = assembly.CreateInstance(typeName, true, BindingFlags.CreateInstance, null, args, System.Globalization.CultureInfo.InvariantCulture, null); MethodInfo methodProcessReq = m_mapService.GetType().GetMethod("ProcessRequest"); m_processReqDelegate = (ProcessRequestDelegate)Delegate.CreateDelegate(typeof(ProcessRequestDelegate), m_mapService, methodProcessReq); MethodInfo methodGetMapUrls = m_mapService.GetType().GetMethod("GetMapUrls"); m_getMapUrlsDelegate = (GetMapUrlsDelegate)Delegate.CreateDelegate(typeof(GetMapUrlsDelegate), m_mapService, methodGetMapUrls); } catch (TargetInvocationException tiex) { throw tiex.GetBaseException(); } AssemblyLoader.Unregister(); }
private static string GetDownloadResourceUrl(ProcessRequestDelegate del) { return string.Format("/0x44/{0}/{1}/{2}", PathEncoding.Encode(del.Method.DeclaringType.Assembly.GetName().Name), PathEncoding.Encode(del.Method.DeclaringType.FullName), PathEncoding.Encode(del.Method.Name) ); }
public Request( ProcessRequestDelegate <T> operation , ValidateRequestDelegate validateRequest = null , AuthorizeRequestDelegate authorizeRequest = null ) : base(validateRequest, authorizeRequest) { _operation = operation; }
public async Task VerifyComponentsHookUpCorrectly() { IServiceCollection services = new ServiceCollection(); services.AddTransient <IRequestProcessor, RequestProcessor>(); var serviceProvider = services.BuildServiceProvider(); string logKey = "TestLog"; // Request processing ProcessRequestDelegate <string> process = async(request, contextBag, cancellationToken) => { var log = contextBag[logKey] as StringBuilder; log.Append("Processed"); return(string.Empty); }; ValidateRequestDelegate validator = async(request, contextBag, cancellationToken) => { var log = contextBag[logKey] as StringBuilder; log.Append("Validated>>"); return(RequestValidationResult.Instance()); }; AuthorizeRequestDelegate authorizer = async(request, contextBag, cancellationToken) => { var log = contextBag[logKey] as StringBuilder; log.Append("Authorized>>"); return(new RequestAuthorizationResult()); }; var contextBag = ApFrameworkHelper.GetEmptyBag(); contextBag[logKey] = new StringBuilder(); var expected = "Authorized>>Validated>>Processed"; var request = new Request <string>(process, validator, authorizer); var processor = serviceProvider.GetService <IRequestProcessor>(); await processor.ProcessRequestAsync(request, contextBag); var log = contextBag[logKey] as StringBuilder; Assert.True(log.ToString() == expected); }
public void Load() { CheckInstallPath(); string strVersion = (string)ConfigurationManager.AppSettings["MapSurfer.Version"]; AssemblyLoader.Register(strVersion); Assembly assembly = AssemblyLoader.LoadAssembly("MapSurfer.Web.dll"); if (assembly == null) { throw new FileNotFoundException("MapSurfer.Web.dll"); } string typeName = "MapSurfer.Web.Services.MappingService"; object[] args = new object[] { (string)ConfigurationManager.AppSettings["MapSurfer.ServiceName"] }; try { m_mapService = assembly.CreateInstance(typeName, true, BindingFlags.CreateInstance, null, args, System.Globalization.CultureInfo.InvariantCulture, null); MethodInfo methodProcessReq = m_mapService.GetType().GetMethod("ProcessRequest"); m_processReqDelegate = (ProcessRequestDelegate)Delegate.CreateDelegate(typeof(ProcessRequestDelegate), m_mapService, methodProcessReq); MethodInfo methodGetMapUrls = m_mapService.GetType().GetMethod("GetMapUrls"); m_getMapUrlsDelegate = (GetMapUrlsDelegate)Delegate.CreateDelegate(typeof(GetMapUrlsDelegate), m_mapService, methodGetMapUrls); } catch (TargetInvocationException tiex) { throw tiex.GetBaseException(); } AssemblyLoader.Unregister(); }
public void Send(ProcessRequestDelegate processDel) { isDone = false; state = RequestState.Waiting; if (acceptGzip) SetHeader ("Accept-Encoding", "gzip"); ThreadPool.QueueUserWorkItem (new WaitCallback (delegate(object t) { Debug.Log("QueueUserWorkItem"); try { var retry = 0; while (++retry < maximumRetryCount) { if (useCache) { string etag = ""; if (etags.TryGetValue (uri.AbsoluteUri, out etag)) { SetHeader ("If-None-Match", etag); } } SetHeader ("Host", uri.Host); var client = new TcpClient (); client.Connect (uri.Host, uri.Port); using (var stream = client.GetStream ()) { var ostream = stream as Stream; if (uri.Scheme.ToLower() == "https") { ostream = new SslStream (stream, false, new RemoteCertificateValidationCallback (ValidateServerCertificate)); try { var ssl = ostream as SslStream; ssl.AuthenticateAsClient (uri.Host); } catch (Exception e) { Debug.LogError ("Exception: " + e.Message); return; } } WriteToStream (ostream); response = new Response (); state = RequestState.Reading; response.ReadFromStream(ostream); processDel(this); } client.Close (); switch (response.status) { case 307: case 302: case 301: uri = new Uri (response.GetHeader ("Location")); continue; default: retry = maximumRetryCount; break; } } if (useCache) { string etag = response.GetHeader ("etag"); if (etag.Length > 0) etags[uri.AbsoluteUri] = etag; } } catch (Exception e) { Debug.LogWarning("Unhandled Exception, aborting request."); Debug.LogWarning(e); Console.WriteLine ("Unhandled Exception, aborting request."); Console.WriteLine (e); exception = e; response = null; } state = RequestState.Done; isDone = true; })); }
public void Send(ProcessRequestDelegate processDel) { isDone = false; state = RequestState.Waiting; if (acceptGzip) { SetHeader("Accept-Encoding", "gzip"); } ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object t) { Debug.Log("QueueUserWorkItem"); try { var retry = 0; while (++retry < maximumRetryCount) { if (useCache) { string etag = ""; if (etags.TryGetValue(uri.AbsoluteUri, out etag)) { SetHeader("If-None-Match", etag); } } SetHeader("Host", uri.Host); var client = new TcpClient(); client.Connect(uri.Host, uri.Port); using (var stream = client.GetStream()) { var ostream = stream as Stream; if (uri.Scheme.ToLower() == "https") { ostream = new SslStream(stream, false, new RemoteCertificateValidationCallback(ValidateServerCertificate)); try { var ssl = ostream as SslStream; ssl.AuthenticateAsClient(uri.Host); } catch (Exception e) { Debug.LogError("Exception: " + e.Message); return; } } WriteToStream(ostream); response = new Response(); state = RequestState.Reading; response.ReadFromStream(ostream); processDel(this); } client.Close(); switch (response.status) { case 307: case 302: case 301: uri = new Uri(response.GetHeader("Location")); continue; default: retry = maximumRetryCount; break; } } if (useCache) { string etag = response.GetHeader("etag"); if (etag.Length > 0) { etags[uri.AbsoluteUri] = etag; } } } catch (Exception e) { Debug.LogWarning("Unhandled Exception, aborting request."); Debug.LogWarning(e); Console.WriteLine("Unhandled Exception, aborting request."); Console.WriteLine(e); exception = e; response = null; } state = RequestState.Done; isDone = true; })); }