为什么在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();
    }
}

问题就出在这里。

时间: 2024-07-31 18:25:06

为什么在Mac中无法用k web运行ASP.NET 5程序的相关文章

Mac中体验ASP.NET 5 beta2的K gen代码生成

ASP.NET 5 beta2中增加了一个新特性(详见ASP.NET 5 Beta2 发布),可以通过K命令生成MVC的代码,比如:k gen controller -name HomeController. 如果你用的是Visual Studio,自然对这个功能不以为然,因为Visual Studio帮你干了. 如果你用的是Mac,没有Visual Studio,也没有K Studio,不想自虐手写本可以通过模板生成的MVC代码,这个特性就值得关注了. 由于对Mac下写ASP.NET代码垂涎已

在Mac中安装.Net Core的开发环境

在mac中部署dotnet core开发环境,我的MacOS版本号为OSX EI Capitan 10.11.6 1.安装brew homebrew官网推荐的安装命令如下: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 但我的机器上安装时却提示连接不上http://raw.githubusercontent.com.....嗯,木有vp

mac中使用vi修改二进制文件

mac中使用vi修改二进制文件 1.首先以二进制方式编辑这个文件vi -b datafile 2.使用xxd转换为16进制:%!xxd 文本看起来像这样: 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1

mac中如何创建文件列表清单介绍详情

相信很多苹果电脑用户们一定都在困惑mac系统到底如何创建列表清单呢?其实方法还是比较简单的,想了解吗?有兴趣不妨来mac中如何创建文件列表清单介绍中仔细瞧瞧哦,相信它可以给你使用mac系统带来有效的帮助哦,还是先来mac中如何创建文件列表清单介绍中看看再说吧.mac中如何创建文件列表清单介绍: 1. 打开Finder定位到要生成文件清单的文件夹,将文件按照想要的方式排序,例如:创建时间 2. 直接全选(Command+A)所有文件,然后复制(Command+C)它们. 3. 接下来打开文本编辑器

链表中倒数第K个结点

题目:输入一个链表,输出改链表倒数第K个结点. 分析:常规方法可能就是,先遍历一遍链表,找到链表长度length,那么我们只需要第二次遍历length-k+1个结点就可以找到倒数第k个结点. 比较好的方法是采用两个指针,让一个指针先走K-1步,后面的指针再跟上.这样只需要遍历一遍. 注意:1.提高容错性,在链表为空 或者k为空.还有k大于链表长度. 2.链表下一个结点,我们采用p=p->next.指针指向的数组我们采用p++; typedef int Type; struct listNode{

Mac 中显示资源库(Library)文件夹目录的几种方法

Mac 中显示资源库(Library)文件夹目录的几种方法 Mac中Library目录在10.6.7系统之后默认隐藏的,要想找到此文件夹有如下几种方法: 1. 用命令可以使其显示: 在终端中执行命令: chflags nohidden ~/Library 可显示资源库文件夹 如想隐藏,可以在终端中执行命令: chflags hidden ~/Library 隐藏 2. 在Finder菜单中的偏好设置中设置 在Finder菜单中的偏好设置中选择边栏,勾选上设备中的硬盘. 再打开Finder,Fin

输出链表中倒数第k个节点

题目描述 输入一个链表,输出该链表中倒数第k个结点. struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; 算法的实现:快慢指针 ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if(pListHead==NULL||k==0) return NULL; ListNode *fast=N

mac中如何创建文件列表清单介绍

相信很多苹果电脑用户们一定都在困惑mac系统到底如何创建列表清单呢?其实方法还是比较简单的,想了解吗?有兴趣不妨来mac中如何创建文件列表清单介绍中仔细瞧瞧哦,相信它可以给你使用mac系统带来有效的帮助哦,还是先来mac中如何创建文件列表清单介绍中看看再说吧.mac中如何创建文件列表清单介绍: 1. 打开Finder定位到要生成文件清单的文件夹,将文件按照想要的方式排序,例如:创建时间 2. 直接全选(Command+A)所有文件,然后复制(Command+C)它们. 3. 接下来打开文本编辑器

Mac中(parallels desktop)pd虚拟机关闭时如何访问硬盘?

对于使用mac电脑还不是很熟练的小伙伴来讲,安装虚拟机是必备!parallels desktop就是一款非常不错的虚拟机工具,那么Mac中pd虚拟机关闭时如何访问硬盘?即使虚拟机是关闭的,我们依然可以访问我们硬盘的内容,如果你也不知道具体如何操作的话,就一起来看看吧! <ignore_js_op> Mac中pd虚拟机关闭时访问硬盘步骤:第一步:在mac电脑中启动Parallels Desktop应用 第二步:右击Dock中的Parallels Desktop图标,然后点击"控制中心&