Подключить к ASP Core проекту фреймворк SignalR

218
30 апреля 2017, 23:57
public class Startup
{
    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        this.Configuration = builder.Build();
    }
    public IConfigurationRoot Configuration { get; }
    /// <summary>
    /// Используется для доступа к контексту SignalR хаба из любого класса
    /// IHubContext context = Startup.ConnectionManager.GetHubContext<CallQueueHub>();
    /// context.Clients.All.someMethod();
    /// </summary>
    //public static IConnectionManager ConnectionManager;
    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMemoryCache();
        // Add framework services.
        services.AddMvc();
        services.AddAuthorization(options =>
        {   // доступ открыт только внутренним пользователям - специалистам.
            // https://docs.asp.net/en/latest/security/authorization/policies.html
            options.AddPolicy("OnlyEmployee", policy =>
            {
                policy.RequireAuthenticatedUser();
                policy.Requirements.Add(new OnlyEmployeeRequirement());
            });
        });
        services.AddSignalR(options =>
        {
            options.Hubs.EnableDetailedErrors = true;
        });
        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        services.AddSingleton<IUserIdentityAccessor, UserIdentityAccessor>();
        services.AddSingleton<IAuthorizationHandler, OnlyEmployeeRequirementHandler>();
        services.AddSingleton<HttpClientProvider>();
        //services.AddSingleton<CallQueueHub>();
        services.AddOptions();  // https://docs.asp.net/en/latest/fundamentals/configuration.html
        services.Configure<AppSettings>(this.Configuration.GetSection("AppSettings"));
    }
    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IServiceProvider serviceProvider)
    {
        loggerFactory.AddConsole(this.Configuration.GetSection("Logging")); // TODO: куда логи складываются? Создалось из шаблона. Надо исследовать.
        loggerFactory.AddDebug();
        //ConnectionManager = serviceProvider.GetService<IConnectionManager>();
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseBrowserLink();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }
        app.UseStaticFiles();
        app.UseWebSockets();
        //app.UseSignalR<RawConnection>("/raw-connection");
        app.UseSignalR();
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }
}

Как подключить к ASP Core проекту SignalR?

READ ALSO
Передача файла в ASP.NET

Передача файла в ASP.NET

Как в ASPNET передать файл POST запросом? (класс, метод)

286
C# Запуск процесса в фоновом режиме

C# Запуск процесса в фоновом режиме

Необходимо скрытно запускать консольное приложение(тестирую на cmd) Использую такой код:

444
Как получить сообщение без вложений? (c#, MailKit, MimeKit)

Как получить сообщение без вложений? (c#, MailKit, MimeKit)

Подскажите есть ли метод в MailKit который позволяет получить сообщение без вложения, но что бы информация, true or false - есть вложение или нет, была?

237