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