我是 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 类中添加这些配置?
您需要在项目的根目录中添加 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);
}
}
}