WebAPI 的 MVC favicon.ico 路由

MVC favicon.ico routing for WebAPI

我有一个使用 .NET Framework 4.6.2 的 ASP.NET Core MVC/WebAPI 项目。在我的解决方案中,每个环境(DEV、Staging、PROD)都有不同的图标图像。当显示 MVC 页面时,我可以毫无问题地将浏览器指向该环境的正确图标。但是,任何直接从 Web 浏览器完成的 API GET 调用,它始终默认为站点根目录下的 favicon.ico。有没有办法让它路由到一个可配置的值,以便我可以选择要显示的值?

你可以通过中间件做到这一点。只需确保 Startup.cs Configure 方法中的 UseMiddleware<YourCustomMiddlware>UseStaticFiles() 之前。这样它将有机会在常规静态文件中间件之前拦截请求并响应它。

在您的自定义中间件中,您只需要检查请求的 url,如果它是针对根目录中的收藏夹图标,那么您可以检查您是否在 Dev、Staging 中 运行或 PROD 和 return 您所在文件所需的实际文件。