'The controller for path '/favicon.ico'未找到...'错误
'The controller for path '/favicon.ico' was not found...' error
我们正在 Visual Studio 2015 年构建一个 ASP.NET MVC 4 应用程序。该应用程序使用 Elmah.MVC 进行异常处理。我们是三个开发人员;对于我们两个人来说,它在本地主机上运行良好,但一位开发人员遇到此错误(由 Elmah 捕获):
The controller for path '/favicon.ico' was not found or does not implement IController.
This post 提供了一个解决方案,我已经修改了包含它的路由,并且有问题的开发人员已经同步了他的代码:
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
现在 Elmah 中没有显示任何内容,但用户继续看到一般错误:
500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.
这是怎么回事?谢谢。
更新 1: 从 Web.config 中删除了 Elmah 内容,并让开发人员加载了该应用程序。它会进入一个无限循环,试图对用户进行身份验证,类似于 this。
我们正在使用 OWIN-MixedAuth,问题很可能与 IIS Express 设置有关。我明天会让开发人员尝试并确认:
- 突出显示 Visual Studio
中的项目
- 打开右侧的'Properties'面板(或按F4)
- 将'Windows Authentication'设置为'Enabled'
- 将'Anonymous Authentication'设置为'Enabled'
顾名思义,它是混合身份验证,因此必须启用两种类型的身份验证。
更新 2: OWIN-Mixed Auth 问题已修复。现在,它与Elmah使用的Web.config中的这三个HTTP模块有关:
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
当我们将它们注释掉时,一个开发人员就可以访问该站点。这些模块有什么作用?为什么他们会引起问题?
将此添加到您的 global.asax 文件。
routes.IgnoreRoute("favicon.ico");
问题终于解决了。我们必须进行两项更改:
我们正在使用 OWIN-MixedAuth,部分问题出在 IIS Express 设置上(在 "Development Server" 部分下):
- 突出显示 Visual Studio
中的项目
- 打开右侧的'Properties'面板(或按F4)
- 将'Windows Authentication'设置为'Enabled'
- 将'Anonymous Authentication'设置为'Enabled'
问题的另一部分:IIS Express 使用的损坏的 applicationhost.config 文件:
- 确保您在 Windows 资源管理器中显示隐藏文件。
- 通过 Windows 资源管理器转到项目的根目录。
- 打开隐藏的
.vs
文件夹。
- 转到配置 > applicationhost.config,备份,然后在记事本中打开(Notepad++ 更好)。
- 将它与我们一台机器上的工作 applicationhost.config 文件进行比较。我们发现配置文件中列出的许多旧站点不再使用。
- 清理完毕后,启动该应用程序,它开始运行了。
我们正在 Visual Studio 2015 年构建一个 ASP.NET MVC 4 应用程序。该应用程序使用 Elmah.MVC 进行异常处理。我们是三个开发人员;对于我们两个人来说,它在本地主机上运行良好,但一位开发人员遇到此错误(由 Elmah 捕获):
The controller for path '/favicon.ico' was not found or does not implement IController.
This post 提供了一个解决方案,我已经修改了包含它的路由,并且有问题的开发人员已经同步了他的代码:
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
现在 Elmah 中没有显示任何内容,但用户继续看到一般错误:
500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.
这是怎么回事?谢谢。
更新 1: 从 Web.config 中删除了 Elmah 内容,并让开发人员加载了该应用程序。它会进入一个无限循环,试图对用户进行身份验证,类似于 this。
我们正在使用 OWIN-MixedAuth,问题很可能与 IIS Express 设置有关。我明天会让开发人员尝试并确认:
- 突出显示 Visual Studio 中的项目
- 打开右侧的'Properties'面板(或按F4)
- 将'Windows Authentication'设置为'Enabled'
- 将'Anonymous Authentication'设置为'Enabled'
顾名思义,它是混合身份验证,因此必须启用两种类型的身份验证。
更新 2: OWIN-Mixed Auth 问题已修复。现在,它与Elmah使用的Web.config中的这三个HTTP模块有关:
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
当我们将它们注释掉时,一个开发人员就可以访问该站点。这些模块有什么作用?为什么他们会引起问题?
将此添加到您的 global.asax 文件。
routes.IgnoreRoute("favicon.ico");
问题终于解决了。我们必须进行两项更改:
我们正在使用 OWIN-MixedAuth,部分问题出在 IIS Express 设置上(在 "Development Server" 部分下):
- 突出显示 Visual Studio 中的项目
- 打开右侧的'Properties'面板(或按F4)
- 将'Windows Authentication'设置为'Enabled'
- 将'Anonymous Authentication'设置为'Enabled'
问题的另一部分:IIS Express 使用的损坏的 applicationhost.config 文件:
- 确保您在 Windows 资源管理器中显示隐藏文件。
- 通过 Windows 资源管理器转到项目的根目录。
- 打开隐藏的
.vs
文件夹。 - 转到配置 > applicationhost.config,备份,然后在记事本中打开(Notepad++ 更好)。
- 将它与我们一台机器上的工作 applicationhost.config 文件进行比较。我们发现配置文件中列出的许多旧站点不再使用。
- 清理完毕后,启动该应用程序,它开始运行了。