我试图通过本教程在.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"
}
任何人都知道这个奇怪的模糊错误是什么?它引用相同的名称空间。
答案 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存储库中看到的那样。
您有两种选择:
Microsoft.AspNetCore.WebSockets.Server
0.1.0并删除Microsoft.AspNetCore.WebSockets
。Microsoft.AspNetCore.WebSockets.Server
,因为Microsoft.AspNetCore.WebSockets
1.0.1需要ASP.NET Core 1.1(至少Microsoft.AspNetCore.Http.Extensions
)答案 1 :(得分:0)
查看你的cs文件,你可能正在导入两个具有相同方法定义的命名空间