【问题标题】:MVC3 site deployed on IIS6 stops working after 20 minuttes with 404 Not Found部署在 IIS 6 上的 MVC3 站点在 20 分钟后停止工作,并出现 404 Not Found
【发布时间】:2011-09-09 21:11:03
【问题描述】:

我会尽量简短,请随时询问更多详细信息。

已使用 MV3 razor 创建了一个移动版网站,并使用无扩展 URL 将其部署到 IIS6 网络服务器。由于 .NET4 安装在服务器上,因此无需在服务器上进行特殊配置即可使无扩展名 url 工作。当我尝试使用以下 URL 访问该站点时:http://site/m/ 我收到 404 Not Found 错误。

我怎么做才能产生这个问题:

  1. 在VS2010中右键项目并发布到本地文件系统。
  2. 压缩所有文件并传输到生产服务器 + 在那里解压缩
  3. 右键单击生产网站并为新应用程序添加一个虚拟目录
  4. 使用所有默认设置创建一个新的应用程序池
  5. 将新的虚拟目录/应用程序放入该应用程序池中
  6. 尝试在浏览器中访问网址;接收404 Not Found

让我困惑的是,如果我用“文件->创建新的 MVC3 项目”替换第 1 步,然后发布到本地文件系统一切正常:

  1. 测试项目在浏览器中显示为我使用的名称http://site/mvctest/
  2. 我不需要使用任何扩展程序
  3. 20 分钟后它不会停止工作(请参阅下一段)

现在是(甚至)更奇怪的部分:

如果我现在将“m”应用程序移动到刚刚为“mvctest”应用程序创建的应用程序池中;它也有效。但仅持续 20 分钟(或我为“空闲后关闭工作进程”设置的任何值)。

有什么想法吗?

编辑:如果我将通配符映射添加到/m/ 虚拟目录,它可以工作,但这应该/可能也会以不好的方式影响性能?

【问题讨论】:

    标签: asp.net-mvc-3 iis-6 asp.net-4.0 windows-server-2003-r2


    【解决方案1】:

    这听起来像你的第一个场景处理程序没有设置来处理 mvc 请求。需要集成 IIS 6 或映射 MVC 的扩展。 将应用程序池设置为在集成管道模式下运行。那会发生什么?这应该有效。还要检查事件日志以了解由于工作进程重置而启动的快速故障保护。

    【讨论】:

    • 如何将 IIS6 应用程序池设置为集成管道模式?我以为那是 IIS7 的功能?在事件日志中找不到任何内容。
    • 啊..对不起。是的,iis 6 始终是“经典”(根据 iis 7 定义),因此您必须设置通配符处理程序才能让您的应用程序正常工作。
    • 至于您关于性能的问题 - 当然 - 性能可能会受到影响,但您需要确定这是否是一个问题。许多网站都是这样运行的,没有性能问题。测试您的应用程序。尝试的一种选择是删除任何资源文件夹(脚本、图像等)的映射
    • 您确定我必须拥有处理程序吗?来自Phil Haacks 博客:如果您的服务器运行 IIS 6、ASP.NET 4 和 ASP.NET MVC 3,您的网站应该只使用 ASP.NET MVC 应用程序生成的默认无扩展 URL。无需配置通配符映射或 *.mvc 映射 另请注意,使用默认的 MVC 项目 /mvctest/ 一切正常,无需任何通配符映射。
    • 有趣 - 由于无扩展 url(我们的 iis6 机器不是 asp.net4),这从 asp.net 4 开始发生了变化。现在看来您不需要它-每天都学习新东西:)但是-根据帖子,您确实需要另一个映射。我会从帖子中对此进行检查:“这是 v4.0 ASP.NET 无扩展 URL 功能在 IIS 6 上的工作方式。我们有一个名为 aspnet_filter.dll 的 ISAPI 过滤器,它将“/eurl.axd/GUID”附加到无扩展URLs." 并确保 aspnet_filter.dll 设置正确。
    猜你喜欢
    • 2019-11-24
    • 2016-09-13
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2011-05-10
    • 2018-09-09
    相关资源
    最近更新 更多