示例#1
0
		/// <summary>
		/// Creates a new instance of the JsxFileMiddleware.
		/// </summary>
		/// <param name="next">The next middleware in the pipeline.</param>
		/// <param name="options">The configuration options.</param>
		public JsxFileMiddleware(Func<IDictionary<string, object>, Task> next, JsxFileOptions options)
		{
			if (next == null)
				throw new ArgumentNullException("next");

			_next = next;

			// Default values
			_options = options ?? new JsxFileOptions();
		}
示例#2
0
		/// <summary>
		/// Creates a new instance of the JsxFileMiddleware.
		/// </summary>
		/// <param name="next">The next middleware in the pipeline.</param>
		/// <param name="options">The configuration options.</param>
		/// <param name="hostingEnv">The hosting environment.</param>
		/// <param name="loggerFactory">An <see cref="ILoggerFactory"/> instance used to create loggers.</param>
		public JsxFileMiddleware(RequestDelegate next, JsxFileOptions options, IHostingEnvironment hostingEnv, ILoggerFactory loggerFactory)
		{
			if (next == null)
				throw new ArgumentNullException("next");

			_next = next;
			_hostingEnv = hostingEnv;
			_loggerFactory = loggerFactory;

			// Default values
			_options = options ?? new JsxFileOptions();
		}
		/// <summary>
		/// Initialises ReactJS.NET for this application
		/// </summary>
		/// <param name="app">ASP.NET application builder</param>
		/// <param name="configure">ReactJS.NET configuration</param>
		/// <param name="fileOptions">Options to use for serving JSX files</param>
		/// <returns>The application builder (for chaining)</returns>
		public static IApplicationBuilder UseReact(
			this IApplicationBuilder app,
			Action<IReactSiteConfiguration> configure,
			JsxFileOptions fileOptions = null
		)
		{
			EnsureServicesRegistered(app);

			// Register IApplicationEnvironment in our dependency injection container
			// Ideally this would be in AddReact(IServiceCollection) but we can't 
			// access IApplicationEnvironment there.
			React.AssemblyRegistration.Container.Register(app.ApplicationServices.GetRequiredService<IApplicationEnvironment>());
			React.AssemblyRegistration.Container.Register(app.ApplicationServices.GetRequiredService<IHostingEnvironment>());

			Initializer.Initialize(registerOptions => AsPerRequestSingleton(app.ApplicationServices, registerOptions));
			configure(ReactSiteConfiguration.Configuration);

			// Allow serving of .jsx files
			app.UseMiddleware<JsxFileMiddleware>(fileOptions ?? new JsxFileOptions());

			return app;
		}
示例#4
0
		/// <summary>
		/// Enables serving static JSX file, compiled to JavaScript with the given options.
		/// </summary>
		public static IAppBuilder UseJsxFiles(this IAppBuilder builder, JsxFileOptions options = null)
		{
			return builder.Use<JsxFileMiddleware>(options ?? new JsxFileOptions());
		}