我正在尝试在我的 CentOS 机器上使用 dnx 和 kestrel 运行 .Net WebApi,我收到很多“名称空间 'blahblah' 中不存在类型或名称空间 'blah'”错误,这暗示了 dnx出于某种原因,使用了一些旧程序集,这些程序集确实没有定义后者。到目前为止,我已经在同一台机器上成功地运行了与自托管应用程序相同的 WebApi。它也已使用 xbuild 成功编译,但到目前为止,使用 dnx 编译并托管在 kestrtel 上没有运气。这是我第一次使用 dnx,我敢肯定,我做错了什么,但是谷歌搜索和阅读仍然没有帮助我理解,到底出了什么问题。我的 project.json 如下:
{
"webroot": "./",
"dependencies": {
"Kestrel": "1.0.0-beta5",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta5",
"Microsoft.AspNet.Hosting": "1.0.0-beta5",
"Microsoft.AspNet.Mvc": "6.0.0-beta5",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta5",
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0.0-beta5",
"System.Net.Http": "4.0.0-beta5",
"System.Web.Http": "2.0.0",
"Autofac": "3.5.2",
"Autofac.WebApi2": "3.4.0",
"Microsoft.AspNet.Cors": "5.2.3",
"Microsoft.AspNet.SignalR": "2.2.0",
"Microsoft.AspNet.SignalR.Core": "2.2.0",
"Microsoft.AspNet.SignalR.JS": "2.2.0",
"Microsoft.AspNet.SignalR.SystemWeb": "2.2.0",
"Microsoft.AspNet.WebApi": "5.2.3",
"Microsoft.AspNet.WebApi.Client": "5.2.3",
"Microsoft.AspNet.WebApi.Core": "5.2.3",
"Microsoft.AspNet.WebApi.WebHost": "5.2.3",
"Microsoft.Owin": "3.0.1",
"Microsoft.Owin.Cors": "3.0.1",
"Microsoft.Owin.Host.SystemWeb": "2.1.0",
"Microsoft.Owin.Security": "3.0.1",
"Newtonsoft.Json": "5.0.4"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001",
"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
},
"frameworks": {
"dnx451": {
}
}}
最大的错误与 System.Configuration.Configurationmanager 相关,dnx 无法在 System.Configuration 中找到它并从 System.Runtime.Caching 中找到类型,在后一种情况下,dnx 根本找不到 System.Runtime.Caching。错误还说,我使用的 dnx 版本是 v4.5.1,我想应该理解 .Net 4.5.1。dnvm list 命令显示 1.0.0-beta6。是否有可能,我必须手动提供必要的 dll?如果是这样,我应该把它们放在哪里?如果这个问题的原因不同,那可能是什么?如果有人能解释一下关于 dnx 的基础知识,我将不胜感激:即,我在哪里可以找到它的配置文件,它在哪里放置包和 dll,它是否使用单声道,或者它有自己的运行时,它使用什么编译器,以及我应该获取其特定版本等吗?