【问题标题】:ASP.NET No suitable constructor for WebSocketManagerMiddlewareASP.NET 没有适合 WebSocketManagerMiddleware 的构造函数
【发布时间】:2018-01-03 07:11:29
【问题描述】:

在创建这样的 WebSocketManagerExtensions 时出现错误:

System.InvalidOperationException
A suitable constructor for type 
'CustomerManagementCore.WebSocketManager.WebSocketManagerMiddleware' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.

MapWebSocketManager方法:

public static IApplicationBuilder MapWebSocketManager(this IApplicationBuilder app,
                                                            PathString path,
                                                            WebSocketHandler handler)
{
    return app.Map(path, (_app) => _app.UseMiddleware<WebSocketManagerMiddleware>(handler));
}

WebSocketManagerMiddleware构造函数:

public WebSocketManagerMiddleware(RequestDelegate next,
                                      WebSocketHandler webSocketHandler)
{
    _next = next;
    _webSocketHandler = webSocketHandler;
}

我知道我的WebSocketManagerMiddleware 构造函数是否有错误,但我不知道。 有人知道吗?

谢谢。

【问题讨论】:

  • 这可能是一个愚蠢的问题,但是您是否在启动类中将 WebSocketHandler 添加到 ConfigureServices 的 IServiceCollection 中?
  • 哦,我的错!我忘记了。现在已经解决了,谢谢。
  • 如果您不介意接受它,我会将其作为答案发布。

标签: c# asp.net asp.net-core dnx dnx50


【解决方案1】:

从错误中我猜WebSocketHandler 没有添加到您的启动类中的IServicesCollection。一旦将它添加到服务集合中,它应该能够按预期注入。这通常在 ConfigureServices 方法中完成,用于从默认模板创建的 ASP.NET Core 应用程序。

【讨论】:

  • 谢谢!在我的情况下,我通过添加这一行来解决 services.AddTransient&lt;ChatWebSocketHandler&gt;();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 2013-08-20
相关资源
最近更新 更多