在asp.net web API项目中为手动创建的startup.cs类添加配置

问题描述 投票:0回答:1

我是 asp.net 的新手,开始使用 Visual Studio 中的 Web API 项目。我想将这些 Web API 用于 Angular 应用程序。为此,我必须启用 CORS 并配置 SignalR

在 ConfigureServices 方法中,我们将 SignalR 添加到 IService 集合中。并在配置中 方法,我们通过使用提供的 /chart 路径指向我们的 ChartHub,将 SignalR 添加到请求管道。

(参考:https://code-maze.com/netcore-signalr-angular/

我的web API项目中没有

Startup.cs
文件,所以我添加了一个
OWIN startup class
。这个类有一个
Configuration
方法但没有
ConfigureService
Configure
。我对如何在
startup.cs
中添加启用 CORS 和 SignalR 感到困惑。如何在 startup.cs 类中添加这些配置?

c# asp.net asp.net-web-api startup .net-framework-version
1个回答
0
投票

您需要在项目的根目录中添加 Startup 类,并用 OwinStartup 属性标记它以指示要用于自动设置的类。

然后您需要实施配置方法,您可以在其中设置身份验证、COR、Signalr 等内容。

您还可以通过Visual Studio 中的Add Item 添加Owin Startup Class。它将为您的配置添加基本设置。 https://learn.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-startup-class-detection#create-an-aspnet-web-app-using-owin-startup

[assembly: OwinStartup(typeof(Example.Web.Startup))]
namespace Example.Web
{
    public class Startup
    {
        private static CorsOptions _corsOptions = new CorsOptions
        {
            PolicyProvider = new CorsPolicyProvider
            {
                PolicyResolver = context =>
                {
                    var policy = new CorsPolicy();
                    foreach (string domain in ConfigHelper.AllowedCorsDomains.Split(','))
                    {
                        policy.Origins.Add(domain);
                    }

                    policy.AllowAnyMethod = true;
                    policy.AllowAnyHeader = true;
                    policy.SupportsCredentials = true;
                    return Task.FromResult(policy);
                }
            }
        };

        public void Configuration(IAppBuilder app)
        {
            app.UseCors(_corsOptions);
            app.MapSignalR();

            AccessTokenFormat = new SecureDataFormat<AuthenticationTicket>(new TicketSerializer(), app.GetDataProtectionProvider().Create("ASP.Net Identity"), new Base64TextEncoder());

            
            OAuthBearerAuthenticationOptions = new OAuthBearerAuthenticationOptions()
            {
                AccessTokenFormat = AccessTokenFormat
            };

            if (provider != null)
            {
                OAuthBearerAuthenticationOptions.Provider = provider;
            }

            app.UseOAuthBearerAuthentication(OAuthBearerAuthenticationOptions);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.