Beispiel #1
0
		public void Init(HttpApplication app) {
			app.AddOnPreRequestHandlerExecuteAsync(
				new BeginEventHandler(this.BeginPreHandlerExecute), 
				new EndEventHandler(this.EndPreHandlerExecute));

			_app = app;
		}
 public void Initialize(HttpApplication application)
 {
     for (IntegratedPipelineBlueprintStage stage = _blueprint.FirstStage; stage != null; stage = stage.NextStage)
     {
         var segment = new IntegratedPipelineContextStage(this, stage);
         switch (stage.Name)
         {
             case Constants.StageAuthenticate:
                 application.AddOnAuthenticateRequestAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             case Constants.StagePostAuthenticate:
                 application.AddOnPostAuthenticateRequestAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             case Constants.StageAuthorize:
                 application.AddOnAuthorizeRequestAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             case Constants.StagePostAuthorize:
                 application.AddOnPostAuthorizeRequestAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             case Constants.StageResolveCache:
                 application.AddOnResolveRequestCacheAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             case Constants.StagePostResolveCache:
                 application.AddOnPostResolveRequestCacheAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             case Constants.StageMapHandler:
                 application.AddOnMapRequestHandlerAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             case Constants.StagePostMapHandler:
                 application.AddOnPostMapRequestHandlerAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             case Constants.StageAcquireState:
                 application.AddOnAcquireRequestStateAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             case Constants.StagePostAcquireState:
                 application.AddOnPostAcquireRequestStateAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             case Constants.StagePreHandlerExecute:
                 application.AddOnPreRequestHandlerExecuteAsync(segment.BeginEvent, segment.EndEvent);
                 break;
             default:
                 throw new NotSupportedException(
                     string.Format(CultureInfo.InvariantCulture, Resources.Exception_UnsupportedPipelineStage, stage.Name));
         }
     }
     // application.PreSendRequestHeaders += PreSendRequestHeaders; // Null refs for async un-buffered requests with bodies.
     application.AddOnEndRequestAsync(BeginFinalWork, EndFinalWork);
 }
		/// <summary>
		/// Initializes the module and prepares it to handle requests.
		/// </summary>
		/// <param name="application">An HttpApplication that provides access to the methods, properties, and events common to all application objects within an ASP.NET application.</param>
		public void Init(HttpApplication application)
		{
			//http://support.microsoft.com/kb/911816
			// Do this one time for each AppDomain.
			if (!_initialized) 
			{
				lock (_objLock) 
				{
					if (!_initialized) 
					{
                        if (Log.IsInfoEnabled)
                        {
                            Log.Info("************************************");
                            Log.Info(__Res.GetString(__Res.Fluorine_Start));
                            Log.Info(__Res.GetString(__Res.Fluorine_Version, Assembly.GetExecutingAssembly().GetName().Version));
                            Log.Info(string.Format("Common language runtime version {0}", Environment.Version));
                            Log.Info("************************************");
                            Log.Info(__Res.GetString(__Res.MessageServer_Create));
                        }
                        try
                        {
                            // See if we're running in full trust
                            new PermissionSet(PermissionState.Unrestricted).Demand();
                            //LinkDemands and InheritenceDemands Occur at JIT Time
                            //http://blogs.msdn.com/shawnfa/archive/2006/01/11/511716.aspx
                            WireAppDomain();
                            RegisterObject();
                        }
                        catch (MethodAccessException){}
                        catch (SecurityException){}

                        FluorineWebContext.Initialize();

                        Log.Info(__Res.GetString(__Res.ServiceBrowser_Aquire));
                        try
                        {
                            Type type = ObjectFactory.Locate("FluorineFx.ServiceBrowser.ServiceBrowserRenderer");
                            if (type != null)
                            {
                                _serviceBrowserRenderer = Activator.CreateInstance(type) as IServiceBrowserRenderer;
                                if (_serviceBrowserRenderer != null)
                                    Log.Info(__Res.GetString(__Res.ServiceBrowser_Aquired));
                            }
                        }
                        catch (Exception ex)
                        {
                            Log.Fatal(__Res.GetString(__Res.ServiceBrowser_AquireFail), ex);
                        }

                        try
                        {
                            _messageServer = new MessageServer();
                            string[] possibleConfigFolderPaths = new string[PossibleConfigFolderNames.Length];
                            for (int i = 0; i < PossibleConfigFolderNames.Length; i++)
                            {
                                string configPath = Path.Combine(HttpRuntime.AppDomainAppPath, PossibleConfigFolderNames[i]);
                                possibleConfigFolderPaths[i] = configPath;
                            }
                            _messageServer.Init(possibleConfigFolderPaths, _serviceBrowserRenderer != null);
                            _messageServer.Start();
                            Log.Info(__Res.GetString(__Res.MessageServer_Started));
                            HttpContext.Current.Application[FluorineMessageServerKey] = _messageServer;
                        }
                        catch (Exception ex)
                        {
                            Log.Fatal(__Res.GetString(__Res.MessageServer_StartError), ex);
                        }

                        _handlers.Add(new AmfRequestHandler(this));
                        _handlers.Add(new StreamingAmfRequestHandler(this));
                        _handlers.Add(new RtmptRequestHandler(this));
                        _handlers.Add(new JsonRpcRequestHandler(this));
                        _initialized = true;
					}
				}
			}

			//Wire up the HttpApplication events.
			//
			//BeginRequest 
			//AuthenticateRequest 
			//AuthorizeRequest 
			//ResolveRequestCache 
			//A handler (a page corresponding to the request URL) is created at this point.
			//AcquireRequestState ** Session State ** 
			//PreRequestHandlerExecute 
			//[The handler is executed.] 
			//PostRequestHandlerExecute 
			//ReleaseRequestState 
			//Response filters, if any, filter the output.
			//UpdateRequestCache 
			//EndRequest 

			application.BeginRequest += ApplicationBeginRequest;
            if (!FluorineConfiguration.Instance.FluorineSettings.Runtime.AsyncHandler)
            {
                application.PreRequestHandlerExecute += ApplicationPreRequestHandlerExecute;
            }
            else
            {
                application.AddOnPreRequestHandlerExecuteAsync(BeginPreRequestHandlerExecute, EndPreRequestHandlerExecute);
            }

			application.AuthenticateRequest += ApplicationAuthenticateRequest;

			//This implementation hooks the ReleaseRequestState and PreSendRequestHeaders events to 
			//figure out as late as possible if we should install the filter.
			//The Post Release Request State is the event most fitted for the task of adding a filter
			//Everything else is too soon or too late. At this point in the execution phase the entire 
			//response content is created and the page has fully executed but still has a few modules to go through
			//from an ASP.NET perspective.  We filter the content here and all of the javascript renders correctly.
			//application.PostReleaseRequestState += new EventHandler(this.CompressContent);
			application.ReleaseRequestState += ApplicationReleaseRequestState;
			application.PreSendRequestHeaders += ApplicationPreSendRequestHeaders;
			application.EndRequest += ApplicationEndRequest;
		}
Beispiel #4
0
		public void Events_Deny_Unrestricted ()
		{
			HttpApplication app = new HttpApplication ();
			app.Disposed += new EventHandler (Handler);
			app.Error += new EventHandler (Handler);
			app.PreSendRequestContent += new EventHandler (Handler);
			app.PreSendRequestHeaders += new EventHandler (Handler);
			app.AcquireRequestState += new EventHandler (Handler);
			app.AuthenticateRequest += new EventHandler (Handler);
			app.AuthorizeRequest += new EventHandler (Handler);
			app.BeginRequest += new EventHandler (Handler);
			app.EndRequest += new EventHandler (Handler);
			app.PostRequestHandlerExecute += new EventHandler (Handler);
			app.PreRequestHandlerExecute += new EventHandler (Handler);
			app.ReleaseRequestState += new EventHandler (Handler);
			app.ResolveRequestCache += new EventHandler (Handler);
			app.UpdateRequestCache += new EventHandler (Handler);

			app.AddOnAcquireRequestStateAsync (null, null);
			app.AddOnAuthenticateRequestAsync (null, null);
			app.AddOnAuthorizeRequestAsync (null, null);
			app.AddOnBeginRequestAsync (null, null);
			app.AddOnEndRequestAsync (null, null);
			app.AddOnPostRequestHandlerExecuteAsync (null, null);
			app.AddOnPreRequestHandlerExecuteAsync (null, null);
			app.AddOnReleaseRequestStateAsync (null, null);
			app.AddOnResolveRequestCacheAsync (null, null);
			app.AddOnUpdateRequestCacheAsync (null, null);

			app.Disposed -= new EventHandler (Handler);
			app.Error -= new EventHandler (Handler);
			app.PreSendRequestContent -= new EventHandler (Handler);
			app.PreSendRequestHeaders -= new EventHandler (Handler);
			app.AcquireRequestState -= new EventHandler (Handler);
			app.AuthenticateRequest -= new EventHandler (Handler);
			app.AuthorizeRequest -= new EventHandler (Handler);
			app.BeginRequest -= new EventHandler (Handler);
			app.EndRequest -= new EventHandler (Handler);
			app.PostRequestHandlerExecute -= new EventHandler (Handler);
			app.PreRequestHandlerExecute -= new EventHandler (Handler);
			app.ReleaseRequestState -= new EventHandler (Handler);
			app.ResolveRequestCache -= new EventHandler (Handler);
			app.UpdateRequestCache -= new EventHandler (Handler);
#if NET_2_0
			app.PostAuthenticateRequest += new EventHandler (Handler);
			app.PostAuthorizeRequest += new EventHandler (Handler);
			app.PostResolveRequestCache += new EventHandler (Handler);
			app.PostMapRequestHandler += new EventHandler (Handler);
			app.PostAcquireRequestState += new EventHandler (Handler);
			app.PostReleaseRequestState += new EventHandler (Handler);
			app.PostUpdateRequestCache += new EventHandler (Handler);

			app.AddOnPostAuthenticateRequestAsync (null, null);
			app.AddOnPostAuthenticateRequestAsync (null, null, null);
			app.AddOnPostAuthorizeRequestAsync (null, null);
			app.AddOnPostAuthorizeRequestAsync (null, null, null);
			app.AddOnPostResolveRequestCacheAsync (null, null);
			app.AddOnPostResolveRequestCacheAsync (null, null, null);
			app.AddOnPostMapRequestHandlerAsync (null, null);
			app.AddOnPostMapRequestHandlerAsync (null, null, null);
			app.AddOnPostAcquireRequestStateAsync (null, null);
			app.AddOnPostAcquireRequestStateAsync (null, null, null);
			app.AddOnPostReleaseRequestStateAsync (null, null);
			app.AddOnPostReleaseRequestStateAsync (null, null, null);
			app.AddOnPostUpdateRequestCacheAsync (null, null);
			app.AddOnPostUpdateRequestCacheAsync (null, null, null);

			app.AddOnAcquireRequestStateAsync (null, null, null);
			app.AddOnAuthenticateRequestAsync (null, null, null);
			app.AddOnAuthorizeRequestAsync (null, null, null);
			app.AddOnBeginRequestAsync (null, null, null);
			app.AddOnEndRequestAsync (null, null, null);
			app.AddOnPostRequestHandlerExecuteAsync (null, null, null);
			app.AddOnPreRequestHandlerExecuteAsync (null, null, null);
			app.AddOnReleaseRequestStateAsync (null, null, null);
			app.AddOnResolveRequestCacheAsync (null, null, null);
			app.AddOnUpdateRequestCacheAsync (null, null, null);

			app.PostAuthenticateRequest -= new EventHandler (Handler);
			app.PostAuthorizeRequest -= new EventHandler (Handler);
			app.PostResolveRequestCache -= new EventHandler (Handler);
			app.PostMapRequestHandler -= new EventHandler (Handler);
			app.PostAcquireRequestState -= new EventHandler (Handler);
			app.PostReleaseRequestState -= new EventHandler (Handler);
			app.PostUpdateRequestCache -= new EventHandler (Handler);
#endif
		}