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(); } }
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。