Tag: CORS

  • ASP.NET SignalR e CORS

    Este artigo foi publicado em 2016. Ferramentas e versões citadas podem ter mudado desde então; a reflexão permanece.

    Fala galera!

    Dando continuidade ao tema ASP.NET SignalR o qual comentei aqui já começo a série de exemplos com a configuraçÃo que utilizei me nosso projeto para permitir o uso entre diferentes domínios, o famoso CORS.

    public partial class Startup
     {
     public void ConfigureSignalR(IAppBuilder app)
     {
     IContainer container = ContainerConfig.Configure();</p>
    
    <pre><code>        var resolver = new Autofac.Integration.SignalR.AutofacDependencyResolver(container);
            GlobalHost.DependencyResolver = resolver;
            var config = new HubConfiguration()
            {
                Resolver = resolver,
                EnableDetailedErrors = true,
                EnableJSONP        = true
            };
            var cors = new CorsOptions()
            {
                PolicyProvider = new CorsPolicyProvider()
                {
                    PolicyResolver = context =&gt;
                    {
                        var policy = new CorsPolicy();
                        policy.Origins.Add(@&quot;http://nossaappweb.azurewebsites.net&quot;);
                        policy.AllowAnyMethod = true;
                        policy.AllowAnyHeader= true;
                        policy.SupportsCredentials = true;
                        return Task.FromResult(policy);
                    }
                }
            };
            app.Map(&quot;/signalr&quot;, map =&gt;
            {               
               map.UseCors(cors);  
                map.RunSignalR(config);
            });
    
        }
    }
    

    Com este método estou fazendo as seguintes configurações:

    • Habilitando o SignalR e o uso de CORS para o endpoint /signalr; Habilitando JXP para browsers legados;
    • Habilitando a injeção de dependencia utilizando o Autofac;

    No próximo post irei mostrar como ficou nosso Hub e uma dica para escapar do Singleton que é implementado por padrão para ele.

    Até a próxima!