/// <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); }