【发布时间】:2016-12-13 15:36:09
【问题描述】:
我正在使用 ASP.NET Core v1.1 创建一个 WebSocket 服务器。这是我的 Startup.cs 的精简版:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// ...
// route of "/ws" requests
app.Map("/ws", Map);
}
public void ConfigureServices(IServiceCollection services)
{
// add the db service
services.AddDbContext<ArticleContext>(
opts => opts.UseNpgsql("MyConnectionString")
);
}
private void Map(IApplicationBuilder app)
{
app.UseWebSockets();
app.Use(Acceptor);
}
private async Task Acceptor(HttpContext httpContext, Func<Task> next)
{
// Handle the request using: httpContext.WebSockets.IsWebSocketRequest
// ...
}
如您所见,我正在使用 Acceptor 任务来处理 Web 套接字请求。我还在 ConfigureServices 方法中添加了一个 DbContext。
我没有添加任何 MVC 功能,因为我没有使用它。但我需要访问 ArticleContext 才能连接到我的数据库。
我看到的所有示例都使用了 MVC 包附带的 Controller。在这样的控制器中,您可以使用构造函数依赖注入来注入 DBContext。
我不使用 Controller 而是使用 Acceptor 方法,那么如何在其中获取 ArticleContext 实例?
我是否必须编写一个 MyAcceptor 类并通过 app.Use() 而不是使用 app.Map 将其添加到应用程序> 能够注入依赖项? .. 只是猜测。
【问题讨论】:
-
您是否知道可以将所需的任何依赖项添加到 Configure 方法签名中,只要它们在 ConfigureServices 中注册,它们就会被注入到方法中?
-
不,我不知道。可能有用,但不能解决我的问题。感谢您的评论。
标签: c# asp.net dependency-injection asp.net-core