调用app.UseWebSockets时出现模糊错误

时间:2017-05-04 21:31:56

标签: c# asp.net-core

我试图通过本教程在.NET Core中使用Web套接字:https://zbrad.github.io/tools/wscore/

我需要在我的Startup.cs课程中进行此调用时遇到问题:

app.UseWebSockets();

我在尝试构建时遇到此错误:

  

以下方法或属性之间的调用不明确:   ' Microsoft.AspNetCore.Builder.WebSocketMiddlewareExtensions.UseWebSockets(Microsoft.AspNetCore.Builder.IApplicationBuilder)'和   ' Microsoft.AspNetCore.Builder.WebSocketMiddlewareExtensions.UseWebSockets(Microsoft.AspNetCore.Builder.IApplicationBuilder)'

我根本不知道问题是什么,这是我在project.json文件中的依赖项:

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.AspNetCore.WebSockets": "1.0.1",
    "Microsoft.AspNetCore.WebSockets.Server": "0.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.1"
  }

任何人都知道这个奇怪的模糊错误是什么?它引用相同的名称空间。

2 个答案:

答案 0 :(得分:3)

避免混合同一个库的多个版本。通常,当您最终获得新版本或旧版本的库时,就不会发生这种情况。但是当程序集名称发生更改时(例如,当ASP.NET Core从RC1转到RC2时,从Microsoft.AspNet.*更改为Microsoft.AspNetCore的程序集也会更改,那么您也可以获得不同的程序包名称,并且#39 ; s可以引用两者导致上述错误。

Microsoft.AspNetCore.WebSockets.Server是ASP.NET Core 1.0的过时版本,并且已经在1.1版本中重命名为Microsoft.AspNetCore.WebSockets,正如您在github存储库中看到的那样。

Version 1.0

  • Microsoft.AspNetCore.WebSockets.Client
  • Microsoft.AspNetCore.WebSockets.Protocol
  • Microsoft.AspNetCore.WebSockets.Server

Version 1.1

  • Microsoft.AspNetCore.WebSockets

您有两种选择:

  1. 继续使用ASP.NET Core 1.0(即如果您需要使用LTS版本)并使用Microsoft.AspNetCore.WebSockets.Server 0.1.0并删除Microsoft.AspNetCore.WebSockets
  2. 升级到ASP.NET Core 1.1并删除Microsoft.AspNetCore.WebSockets.Server,因为Microsoft.AspNetCore.WebSockets 1.0.1需要ASP.NET Core 1.1(至少Microsoft.AspNetCore.Http.Extensions

答案 1 :(得分:0)

查看你的cs文件,你可能正在导入两个具有相同方法定义的命名空间