'找不到路径'/favicon.ico'的控制器......'错误

Ale*_*lex 9 c# favicon asp.net-mvc

我们正在Visual Studio 2015中构建一个ASP.NET MVC 4应用程序.该应用程序使用Elmah.MVC进行异常处理.我们是三个开发人员; 对于我们两个人来说,它在localhost上工作正常,但是一个开发人员正在收到此错误(由Elmah捕获):

路径'/favicon.ico'的控制器未找到或未实现IController.

这篇文章提供了一个解决方案,我已经修改了包含它的路由,并且有问题的开发人员同步了他的代码:

routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
Run Code Online (Sandbox Code Playgroud)

现在没有任何内容出现在Elmah中,但用户继续看到一般错误:

500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.
Run Code Online (Sandbox Code Playgroud)

会发生什么事?谢谢.

更新1:从Web.config中删除Elmah的东西,让开发人员加载应用程序.它进入无限循环尝试验证用户,类似于.

我们使用的是OWIN-MixedAuth,问题很可能出在IIS Express设置上.我将让开发人员明天尝试并确认:

  1. 在Visual Studio中突出显示该项目
  2. 打开右侧的"属性"面板(或按F4)
  3. 将"Windows身份验证"设置为"已启用"
  4. 将"匿名身份验证"设置为"已启用"

顾名思义,它是混合身份验证,因此必须启用这两种身份验证.

更新2:已修复OWIN混合身份验证问题.现在,它与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>
Run Code Online (Sandbox Code Playgroud)

当我们评论它们时,一个开发人员能够进入该网站.这些模块做什么?他们为什么会引起问题?

Ale*_*lex 3

终于解决了问题。我们必须做出两项改变:

  • 我们正在使用 OWIN-MixedAuth,部分问题出在 IIS Express 设置上(在“开发服务器”部分下):

    1. 在 Visual Studio 中突出显示该项目
    2. 打开右侧的“属性”面板(或按 F4)
    3. 将“Windows 身份验证”设置为“启用”
    4. 将“匿名身份验证”设置为“启用”
  • 问题的另一部分:IIS Express 使用的 applicationhost.config 文件已损坏:

    1. 确保您在 Windows 资源管理器中显示隐藏文件。
    2. 通过 Windows 资源管理器转到项目的根目录。
    3. 打开隐藏.vs文件夹。
    4. 转到 config > applicationhost.config,进行备份,然后在记事本中打开(Notepad++ 更好)。
    5. 将其与我们一台机器上正在运行的 applicationhost.config 文件进行比较。我们发现配置文件中列出的许多旧站点不再使用。
    6. 清理完毕后,启动应用程序,它就可以工作了。