【问题标题】:What could cause an error with .Net 4.0 and IIS 6?什么可能导致 .Net 4.0 和 IIS 6 出错?
【发布时间】:2011-02-18 05:09:26
【问题描述】:

我在 IIS 6 上有两个网站,当它们设置为 ASP.NET 2(通过 IIS 属性中的 ASP.NET 选项卡)时会引发服务器错误 - 一个是因为依赖于 .NET 4 中内置的库,其他因为它是一个 N4/MVC2 应用程序,它在配置中指定 4.0 作为它的 targetFramework。

当我将 ASP.NET 选项卡中的设置更改为 .NET 4 时,两个网站都只会返回“找不到页面”错误,即使指向特定页面(通过 MVC 应用程序中的路由,.aspx ASP.NET 应用程序中的文件)。

我已尝试将通配符 ISAPI 过滤器添加到 MVC 应用程序中,如网上几个地方所述,但这并没有做任何事情(指向 2.0 dll 或 4.0 dll 时)。服务器和 Visual Studio 中的 .NET 4 版本相同 (4.0.30319)。

我在 Windows Server 2003 的 IIS 6 下运行。

有人知道我在这里可能缺少什么吗?

【问题讨论】:

  • 我已经在 v2 和 v4 文件夹中尝试过投票最多的解决方案,但没有运气。而且它不能解决 ASP.NET 应用程序问题,因为它有一个 .aspx 扩展名(因此不需要将通配符传递给 aspnet_isapi.dll)。

标签: asp.net asp.net-mvc iis-6


【解决方案1】:

根据皮特的评论,我的答案是:

这是 IIS 中的一个设置,Web 服务 扩展。 .NET 4 设置为 禁止。允许它,一切 工作过

【讨论】:

    【解决方案2】:

    显然,您的应用必须在 v4 的 CLR 中运行。那部分很清楚。让您的 ISAPI 过滤器正确可能是一项艰巨的任务。首先,您需要确保(我的意思是确保,不要只看一眼就认为它正确,复制/粘贴路径并确保所有内容都指向正确)所有过滤器都指向正确的 v4.0 DLL .接下来,确保您的通配符过滤器没有选中“确保文件存在”复选框。这是给我带来最多问题的原因。最后,确保您的权限是正确的。

    如果仍然无法正常工作,您需要打开融合日志记录,检查 iis 日志,甚至可能拉出进程监视器以​​查看 IIS 在您连接到服务器时尝试执行的操作。

    【讨论】:

    • 哎呀,这比我习惯的要粗糙得多。我有一个愚蠢的想法,即更新到 v4 只是“更改项目,在服务器上安装框架,检​​查这个,改变那个,等等!”当我早上回来时,我会仔细检查所有这些,我为一个站点做了这件事,但不是两个…而且通配符过滤器绝对没有选中那个框,这在我的博客建议中很清楚阅读。
    • @pete iis6 并不是最容易启动和运行的东西。有很多零碎的东西必须工作,当它们不工作时,你得到的只是该死的 404。
    • 该死的。我以前不需要做任何比添加网站更糟糕的事情,而且这总是有效的......如果我告诉它使用.NET 2,我可以让这些工作(好吧,抛出一个框架错误)......我'我会继续搜索。
    • @pete 总是检查你的日志,打开融合日志,最后的手段是进程监视器。此外,请确保您在该目录和所有子目录上获得了正确的用户权限。这总是另一件可能出错的事情。这是另一个提示:使用 Web 平台安装程序来安装 MVC 网站(并确保您的 prereq 安装正确!)。如果你可以安装,比如说,AtomSite 并访问它,你知道你的机器不是问题,它必须是用户权限或配置错误。然后,您可以进行并排比较以找到您的问题。祝你好运。
    • 感谢您的帮助 - 我最终设法找到了答案,但您的方法是找到答案的更好方法!这是 IIS,Web 服务扩展中的一个设置。 .NET 4 被设置为禁止。允许它,一切正常!正如我所说,你的方法是发现问题的明智方法,而不是盲目的运气。
    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    相关资源
    最近更新 更多