【问题标题】:IIS Express not serving static files to FirefoxIIS Express 不向 Firefox 提供静态文件
【发布时间】:2023-07-13 13:44:01
【问题描述】:

我正在使用带有 IIS Express 8 的 Visual Studio 2013 为本地 Intranet 开发应用程序。此应用程序是在 Visual Studio 2012 中使用 ASP.NET MVC 4 构建的,后来迁移到 2013。我一直在使用 Visual Studio Development Server,直到我顺利迁移到 VS2013。

迁移后,应用程序可以正常编译、运行和验证,但它不提供静态文件 - 它只是返回一个 HTTP 500 响应,没有更多详细信息。见下图:

图像和 CSS 文件也会发生这种情况。

我可以检查什么来解决这个问题?有什么建议吗?

更新:

  • 该应用程序在本地 IIS(版本 8)中运行良好。
  • 它可以在其他 PC 上的 IIS Express 中运行。

更新 2:

  • 经过进一步测试,我发现这只发生在 Mozilla Firefox 上(它在 Internet Explorer 和 Google Chrome 中运行良好) - 我之前没有注意到,因为我一直使用 FF。目前使用的是 29 版。

有什么想法吗?

【问题讨论】:

    标签: firefox iis visual-studio-2013 iis-express static-files


    【解决方案1】:

    终于!我能够在this question 的帮助下解决这个问题。

    这是因为默认情况下 Firefox 已关闭 Windows 集成身份验证。为什么它在常规 IIS 或动态文件(控制器操作、WebApi 等)中运行良好,对我来说没有任何意义,但这是另一天的谜。

    要启用 Windows 集成身份验证,我按照以下步骤操作:

    • 在 Firefox 的地址栏(导航栏)中输入 about:config
    • 搜索network.automatic-ntlm-auth.trusted-uris
    • 双击network.automatic-ntlm-auth.trusted-uris
    • http://localhost 添加到列表中(如果为空则粘贴)

    之后,我在 Firefox 中按 F5,一切正常。

    这个问题的文档很少,所以我想知道是否没有其他人使用带有 MVC 的 Firefox 来开发使用 Windows 集成身份验证的 Web 应用程序?

    【讨论】:

    • 啊,“导航到”是指在 Firefox 浏览器导航栏(地址栏)中输入 about:config。好吧,firefox 就像一个密码解密器。在这些步骤之后,我不得不吹响完美的 A 440Hz 的哨子,然后我必须输入 6 个不可打印的字符。 :) 终于到了。
    • 这又一次让我心烦意乱,然后这个答案拯救了一天。
    【解决方案2】:

    你看过这个吗?

    ASP.NET MVC application gives Internal Server Error only when viewed in Firefox

    它没有解释为什么它可以在 IIS 上运行,但是有一个 firefox 不支持开箱即用的集成身份验证。

    【讨论】:

      【解决方案3】:

      似乎唯一适用于您的情况的是 IIS Express 的安装问题,因为这与 in previous IIS Express versions 看到的问题类似。我要么重新安装它,要么看看您的 Windows 版本是否可以托管 IIS 8,您只需在其中启用静态内容。

      如果这只是未开启静态内容或静态内容权限的问题,您将分别收到 404 或 401 错误。希望这会有所帮助...

      【讨论】:

      • @Meryovi,在这种情况下,我会尝试看看你是否可以使用完整的 IIS,看看你是否可以提供静态内容。如果你不能,我不知道在没有真正看到你的电脑来寻找线索的情况下告诉你什么。抱歉,如果重新安装后没有任何变化,您的问题似乎没有简单的答案。
      • 它在常规 IIS 中工作正常,我只是不知道如何在 IIS Express 中修复它或在哪里查看。感谢所有的帮助。
      【解决方案4】:

      我会在应用程序和系统下的机器事件查看器中查看问题所在。 IIS 是否在同一文件夹中提供任何内容,例如 .txt 文件、.html、jpg 图像?

      可能是文件或文件夹权限和/或在 IIS 下用于访问它们的匿名用户。

      我的第一点是事件查看器,但有关 500 错误的更多详细信息。

      【讨论】:

      • 它不提供任何具有扩展名的静态文件(它提供 razor 页面和 MVC 操作结果,它们是无扩展名的 HTML 页面)。我在事件查看器中没有看到任何错误消息。
      • 你改过MVC中的路由了吗?
      • 你能发布项目网络设置的屏幕截图吗?
      • 是的,我正在使用 AttributeRouting。但是如果我使用默认设置创建一个新项目,也会发生同样的事情。
      • 有趣。根据描述,您对 IIS Express 做了哪些更改?