从 ASP.Net 5“空”项目中删除 Kestrel

Posted

技术标签:

【中文标题】从 ASP.Net 5“空”项目中删除 Kestrel【英文标题】:Removing Kestrel from ASP.Net 5 'empty' project 【发布时间】:2015-12-15 10:19:33 【问题描述】:

我在 Visual Studio 2015 中创建了一个“空”ASP.Net 5 项目。project.json 文件包含这些行

"dependencies": 
  "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
  "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final"
,

"commands": 
  "web": "Microsoft.AspNet.Server.Kestrel"
,

我正在 Windows 10 开发 PC 上进行测试,并计划部署到 Azure,因此,按照 the docs on Servers 中的建议,我想使用 IIS 而不是 Kestrel。

但是,要淘汰 Kestrel 并非易事。首先,我从project.json 文件中删除与 Kestrel 相关的行:

"dependencies": 
  "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
,

"commands": 
,

这无法构建并出现多个错误(“名称空间 'Microsoft.AspNet' 中不存在类型或名称空间名称 'Hosting'”、“名称空间 'Microsoft 中不存在类型或名称空间名称 'DependencyInjection' .Extensions'”、“找不到类型或命名空间名称'IServiceCollection'”和“当前上下文中不存在名称'WebApplication'”)所以我添加dependencies 来修复错误,给出以下内容(成功构建)

"dependencies": 
  "EntityFramework.Core": "7.0.0-rc1-final",
  "Microsoft.AspNet.Hosting": "1.0.0-rc1-final",
  "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
  "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final"
,

"commands": 
,

但是它并没有运行 - 只是无限期地挂起,但它还会将 "web": "Microsoft.AspNet.Server.Kestrel" 行添加回 project.json 中的 commands

如果我不想使用 Kestrel,而只想使用 IIS / IIS Express,那么“Hello World”ASP.Net 5 项目中 project.json 文件的 dependenciescommands 部分应该是什么样子?

【问题讨论】:

我应该在此处发布这个问题还是在 aspnet/Hosting GitHub issues 上发布这个问题? 【参考方案1】:

按照服务器文档中的建议,我想使用 IIS 而不是 Kestrel。

这个文档有点过时了。您必须使用 Kestrel 或其他支持 asp.net 的 http 侦听器 5. 有关更改为 IIS 托管模型here的更多信息@

简而言之:在 IIS 上启动通过 IISPlatformHandler 模块工作,该模块与 Kestrel 等 http 侦听器一起工作。

【讨论】:

以上是关于从 ASP.Net 5“空”项目中删除 Kestrel的主要内容,如果未能解决你的问题,请参考以下文章

为什么 Linux 上的 Asp.NET 5 需要 Kestrel ?

从 ASP.NET 项目中删除所有内联脚本

ASP.NET Core在CentOS上的最小化部署实践

空 ASP.Net Core 项目中的 JavaScript Intellisense

在 asp.net webform 中比较和删除列表框中的项目

如何将 ASP.NET Identity 实现到一个空的 MVC 项目