【发布时间】:2017-09-26 04:00:11
【问题描述】:
所以,我正在阅读 MSDN 上的所有 .NET Core Fundamentals 文章,同时在 Visual Studio 2017 中研究一个新的 .NET Core MVC 应用程序。我在文章以及我在应用程序中看到的内容。我希望有人能帮助我理解。
因此,我了解到,在 Visual Studio 中创建的新 .NET Core 项目默认配置为使用 Kestrel Web 服务器和 IIS Express Web 服务器,在开发中运行时充当反向代理。
我还了解到 ASP.NET Core 模块与 IIS 管道挂钩,除其他外,它会将流量重定向到您的 .NET Core Web 应用程序。
这就是我要挂断的内容。
来自关于 .NET Core 配置的 MSDN 文章:
web.config 文件 在 IIS > 或 IIS-Express 中托管应用程序时需要 web.config 文件。 web.config 打开 IIS 中的 AspNetCoreModule 以启动您的 >app。 web.config 中的设置启用 > IIS 中的 AspNetCoreModule 以启动您的 > 应用程序并配置其他 IIS 设置和模块。如果您使用 Visual >Studio 并删除 web.config,Visual Studio 将创建一个新的。
我的印象是,在 .NET Core 中,应用程序配置已从 web.config 文件中移出,而是通过许多不同的机制进行控制,其中之一就是 appsettings.json 文件。事实上,在 Visual Studio 中创建新的 .NET Core MVC 应用程序甚至不会在我的解决方案目录中创建 web.config 文件。
但是从上面引用的文章看来,ASP.NET Core Module 好像还是通过web.config 文件来配置的?令人困惑的是,文章说 Visual Studio 会为我创建一个 web.config 文件,如果不存在的话,但我已经运行了几次应用程序,并没有看到任何地方创建了 web.config 文件。
让我更困惑的是 MSDN ASP.NET Core 模块参考文章中看似矛盾的信息:
ASP.NET Core 模块通过站点或应用程序 web.config 文件进行配置 >并且在 system.webServer 中有自己的 aspNetCore 配置部分。 >这是一个示例 web.config 文件,Microsoft.NET.Sdk.Web SDK 将在项目发布时为依赖于框架的部署提供 >占位符用于 processPath 和参数:
等等 - 这说明发布我的应用程序的行为是创建 web.config 文件的原因。
那么只有完整的 IIS 需要 web.config 文件吗?如果没有提供 web.config,也许 IIS Express 和 IIS 都可以使用默认行为,但如果我想覆盖默认行为,我需要一个 web.config 文件?
是否有人对这一切在 .NET Core 中的工作原理有深入的了解并愿意让我直截了当?
【问题讨论】:
-
我相信需要一个 web.config 来配置 kestrel 服务器周围的包装器,这允许输入/输出通过 IIS 管道传输到 dotnetcore。所以答案是,如果您使用 IIS,则两者都需要。
-
我不确定这是不是真的,因为我的应用程序运行没有问题,而且我的解决方案中没有任何 web.config。
-
那你的抱怨是什么?
-
我强烈反对Programming By Coincidence,所以当我阅读我上面发布的不一致/含糊/误导性的文档时,我会尽力消除我的误解。换句话说,“它有效,所以不用担心”是不够的。
标签: .net