【问题标题】:IIS 6.0 suddenly shows directory listing instead of MVC 3 appIIS 6.0 突然显示目录列表而不是 MVC 3 应用程序
【发布时间】:2012-01-04 08:07:04
【问题描述】:

一夜之间,一个(内部的,幸运的是)MVC Web 应用程序已经停止为我工作,据我所知没有任何改变。在过去的两天里,应用程序本身绝对没有被修改过,IIS 也是如此。

问题是我得到了我的 www 文件夹的目录列表,而不是应用程序默认操作 (/Home/Index)。

我的 www 文件夹包含标准内容:

bin
Content
Scripts
Views
Global.asax
Web.config

我试过了:

  • 将“特定页面”设置为开始操作,但这并不能解决问题。
  • 在 IIS 中重新启动网页
  • 在 IIS 中启用/禁用“默认内容页面”。没有帮助,但如果我将 Default.html 放在 www 文件夹中,IIS 确实会选择它。

现在,这曾经发生过一次。当时我正在度假,通过重新启动整个万维网发布服务解决了这个问题。虽然这次它也可能会起作用,但我宁愿在临时修复它之前找出问题的根源,只是为了让它在更远的地方再次发生。因此,虽然 WWW Publishing Service 重新启动可能会使网站再次运行,但我宁愿先了解它为什么会发生,然后再以这种方式修复它。

最后,请注意,我在同一台 IIS 服务器上运行其他 MVC 应用程序并且从未遇到过这个问题。

【问题讨论】:

  • 如何获得一个在服务器上实际不存在的 url (/Home/Index) 的目录列表?它列出了您所看到的这个目录是什么?你没有收到 404 错误吗?
  • 无 404 或任何错误消息。它列出了我实际的 www 文件夹的内容,并且据我所知并没有尝试访问 /Home/Index。
  • 您是否在 IIS 6.0 中配置了无扩展名 url?
  • 没有明确说明,但我假设它正在工作,因为我在同一台 IIS 服务器上运行其他三个 MVC 应用程序并且它们从来没有遇到过问题(将此添加到原始问题中)。

标签: asp.net-mvc iis


【解决方案1】:
  1. 打开命令提示符
  2. 转到C:\Windows\Microsoft.NET\Framework\<version> 文件夹。
  3. 运行aspnet_regiis -i

就是这样!

【讨论】:

  • 这将解决问题,但这并不是我来这里的真正目的。我想了解为什么会发生。
  • 我不推荐这个解决方案,如果你有另一个网站需要另一个版本的 .net 框架,你会搞砸的
  • @Afshin Mehrabani 为我工作,你救了我的命 :-) 非常感谢 :-)
  • 这是做什么的?
【解决方案2】:

有点晚了....但是我收到了同样的结果。

我的应用程序池的目标是错误的 .Net 版本(应该与 Web 应用程序目标框架相同)。只需在“设置应用程序池默认值”选项中进行调整,重新启动即可解决。

希望对某人有所帮助。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题。 IIS 根路径已被同事更改。 解决方法是在默认网站的“高级设置”中修复“物理路径”。

    【讨论】:

    • 你把它设置成什么?我尝试将它设置为项目的目录,但它仍然给我同样的问题
    【解决方案4】:

    我认为 /Home/Index 在没有任何配置的情况下无法运行 om IIS 6.0。 ASP.NET MVC 实际上需要“集成模式”,但可以通过应用配置在经典上运行。

    Haack 先生的那篇文章可能会有所帮助:http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

    【讨论】:

    • 将检查这一点,但请注意,该应用程序昨天运行时没有出现问题,并且从那以后就没有更改过。
    【解决方案5】:

    当我在根目录添加一个名为“documents”的文件夹并且还有一个 DOCUMENTS 控制器和视图时,我发现了这个问题。如果我想要位于 CONTROLLER 文件夹或根目录下的 \documents 文件夹中的路由 \documents,我认为会感到困惑。一种解决方案是向路由添加一个 id,使其使用文档的控制器版本

    Url.Action("Index", "Documents", *New With {.id = 1}*)

    也可以将根目录下新添加的文件夹名称改为DOCS。

    【讨论】:

    • 谢谢,这让我解决了我遇到的一个问题,即控制器的名称与网站根目录下的子目录相同。
    【解决方案6】:

    更改应用程序池的 .NET CLR 版本可能会有所帮助。

    1. 右键单击运行您的应用程序的应用程序池,然后选择高级设置...
    2. 将 .NET CLR VERSION 更改为您的应用程序的版本(与配置文件中的相同)
    3. 点击确定

    【讨论】:

      【解决方案7】:

      我遇到了同样的问题,这是我的解决方法。

      尽管在 Visual Studio 中选择了 Web 项目作为启动项目,但 TFS 服务器上的 Global.asax 文件继承自 WebAPI 项目(而不是 Web 项目)时,我遇到了问题。当我运行构建时,Web API 被设置为 Web 服务器上的启动项目,因为它正在 TFS 服务器上部署从 WebAPI 项目继承的版本。为了解决这个问题,我将另一个项目设置为启动项目,然后在 Visual Studio 中再次将 Web 项目更改为启动项目。我不得不这样做,因为当我尝试将我机器上的版本检查到 TFS 时,TFS 抱怨没有待处理的更改。然后我检查了我的代码并再次运行构建。这解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-14
        • 1970-01-01
        • 2015-12-10
        • 2016-01-26
        相关资源
        最近更新 更多