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(); } }
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。