【问题标题】:Why is w3wp.exe looking through my dotnetcore api path to find web.config?为什么 w3wp.exe 会通过我的 dotnetcore api 路径查找 web.config?
【发布时间】:2021-04-15 05:31:05
【问题描述】:

在应用程序池中单独使用 IIS 7 和部署的 dotnetcore 2.1 或 3.1 Web API,我们在查看服务器上的 Process Monitor 时发现,w3wp.exe 工作人员在显然是在寻找 Web 的地方记录了许多错误。配置。他们检查了 api 路线中的每条路线。预期的行为是 w3wp.exe(IIS 工作程序)会将请求“移交”到 dotnetcore 应用程序的路由,该路由会找到端点,但它似乎也在检查 web.config。进程监视器显示 w3wp.exe QueryOpen NAME NOT FOUND 和 PATH NOT FOUND 错误。

我查看了几篇文章并得出结论,这是 web.config 继承的问题,并且 IIS 或 dotnetcore 配置中必须有一些设置规定了检查每个 API 路由路径的行为,就好像它是虚拟的一样可能包含新 web.config 的目录文件夹系统。好处是您可以在子应用程序中拥有不同的 web.config,但我们不想要这样的好处,也不希望这些 IIS 工作人员在一天中因成千上万的此类错误而炸毁日志。我们找到了一个非常简单的解决方案,IIS 管理员可能会说“duh”,但希望能节省一些时间。

【问题讨论】:

    标签: iis .net-core web-config


    【解决方案1】:

    我们在一篇关于 web.config 继承 (https://blogs.iis.net/steveschofield/control-web-config-inheritance-with-iis-7-asp-net-options) 的旧 blog.iis.net 帖子中找到了答案。有一个名为allowsubdirconfig 的配置,它指示w3wp.exe 工作人员检查web.config 文件的子目录。以下是在 IIS applicationhost.config 中更改它的方法,可以通过 IIS 管理器找到:

    1. 进入配置编辑器

    2. 转到 system.applicationHost => 站点 => 虚拟目录默认值

    3. 将 allowSubDirConfig 设置为 False

    我们还发现 Microsoft 建议您使用此设置在 IIS 上托管 dotnetcore 应用程序

    跳过额外的文件操作可以显着提高 具有非常大的随机集合的网站的性能 访问静态内容。

    https://docs.microsoft.com/en-us/previous-versions//dn529134(v=vs.85)?redirectedfrom=MSDN

    请记住,如果您使用此设置,您需要想出一个解决方案来区分使用或不使用该设置的应用程序。

    与 MVC 相关的问题: ASP.NET MVC security and IIS allowSubDirConfig configuration

    【讨论】:

      猜你喜欢
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      相关资源
      最近更新 更多