iis - 为什么 w3wp.exe 会通过我的 dotnetcore api 路径查找 web.config?
问题描述
在应用程序池中单独使用 IIS 7 和部署的 dotnetcore 2.1 或 3.1 Web API,我们在查看服务器上的进程监视器时发现,w3wp.exe 工作人员正在记录许多错误,他们显然是在寻找 web.config。他们检查了 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”,但希望能节省一些时间。
解决方案
我们在一篇关于 web.config 继承的旧 blog.iis.net 帖子中找到了答案(https://blogs.iis.net/steveschofield/control-web-config-inheritance-with-iis-7-asp-net-options)。有一个名为allowsubdirconfig 的配置,它指示w3wp.exe 工作人员检查web.config 文件的子目录。以下是在 IIS applicationhost.config 中更改它的方法,可以通过 IIS 管理器找到:
我们还发现 Microsoft 建议您使用此设置在 IIS 上托管 dotnetcore 应用程序
跳过额外的文件操作可以显着提高具有大量随机访问静态内容的网站的性能。
https://docs.microsoft.com/en-us/previous-versions//dn529134(v=vs.85)?redirectedfrom=MSDN
请记住,如果您使用此设置,您需要想出一个解决方案来区分使用或不使用该设置的应用程序。
与 MVC 相关的问题: ASP.NET MVC 安全性和 IIS allowSubDirConfig 配置
推荐阅读
- sql - SQL SERVER - 汇总表,按行值拆分计数
- c# - 单元测试 UrlHelper 扩展
- extjs - extjs : 同步两个网格面板
- javascript - webpack 4 TypeError:“对象(...)不是函数”
- excel - 如何根据用户表单组合框响应动态计算分数
- python - 检查工作簿的工作表,如果缺少则添加
- python - 推荐的cudf数据框构建
- tomcat - Tomcat 并行部署正在创建新会话
- django - 如何在 Django 中返回第一个序列化对象而不是全部?
- azure - 如何在 React JS 应用程序中为 Azure Active Directory B2C 设置重定向 URL 到 b2clogin.com