为什么在Mac中无法用k web运行ASP.NET 5程序
k web对应的命令如下:
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:8001"
其中Microsoft.AspNet.Hosting是OWIN Host,与用k kestrel时是一样的。Microsoft.AspNet.Server.WebListener是OWIN Server。
运行k web需要在project.json中添加引用:
"Microsoft.Framework.DependencyInjection": "1.0.0-beta2", "Microsoft.Framework.DependencyInjection.Autofac": "1.0.0-beta3-10754"
不然会出现错误:
Missing method Microsoft.Framework.DependencyInjection.ServiceCollectionExtensions::AddContextAccessor
k web最终出现的错误是:
System.DllNotFoundException: httpapi.dll
那原因是什么呢?
Microsoft.AspNet.Server.WebListener虽然是一个.NET托管程序,是被 Microsoft.AspNet.Server.WebListener.ServerFactory.Initialize 调用的。但是AspNet.Server.WebListener在 Microsoft.AspNet.Server.WebListener.ServerFactory.Initialize 中调用了 Microsoft.Net.Http.Server.WebListener ,而在Http.Server.WebListener的构造函数中用到了非托管的httpapi.dll:
// Microsoft.Net.Http.Server.WebListener public WebListener(ILoggerFactory factory) { if (!UnsafeNclNativeMethods.HttpApi.Supported) { throw new PlatformNotSupportedException(); } }
问题就出在这里。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。