我正在编写一个使用WebListener而不是Kestrel 的ASP.NET核心应用程序(在完整的.NET Framework上).我正在使用Visual Studio 2015和Update 3,以及".NET Core 1.0.1工具预览2" (截至本文撰写时,下载网站上的最新VS工具).
因为我正在使用WebListener,并且因为WebListener与IIS Express不兼容,所以我想在Visual Studio中禁用"IIS Express"启动配置文件,这样当我的队友打开此解决方案时,他们的Visual Studio将默认运行控制台应用程序而不是IIS Express,他们只能点击运行而不会出错.
但到目前为止,我还没有能够摆脱VS的"IIS Express"发布配置文件.项目属性>调试选项卡允许我编辑配置文件列表,但是当我选择"IIS Express"配置文件时,"删除"按钮被禁用.如果我直接编辑launchSettings.json,并从"profiles"下删除"IIS Express"元素,则File> Save操作会以静默方式将"IIS Express"配置文件插回到保存到磁盘的JSON中!
显然,Microsoft 确实希望始终拥有"IIS Express"启动配置文件,即使它不一定与所有ASP.NET Core项目兼容.但值得一提的是:有没有人找到一种方法来禁用 ASP.NET Core项目中的"IIS Express"启动配置文件,并且只有启动配置文件选择器中的自主选项?
¹对于好奇的人,我正在使用WebListener,因为它可以让我在没有安装IIS的计算机上自行托管Windows服务并仍然支持NTLM身份验证.Kestrel仅在IIS中托管时支持NTLM,而不是在自托管时支持NTLM.
其实我知道IIS Express是轻量级的开发服务器。另一方面,“dotnet run”将应用程序作为控制台应用程序运行并将其绑定到随机端口。
但实际的区别是什么?我可以逐步启动大型企业应用程序IIS Express,"dotnet run"并且两种情况都可以完美运行。
到目前为止,我看到的所有不同之处在于IIS Express将图标添加到任务栏并dotnet run允许查看控制台输出。但这些都是细微的差别。现在 IIS Express 如此普遍的原因应该是一些全球性的。
可以在此处找到一些结构化:ASP.NET Core 启动设置:IIS Express、IIS、Project、Executable。但它仍然不能解释差异。