【问题标题】:ASP.net 4.0 default.aspx problem on IIS6IIS6 上的 ASP.net 4.0 default.aspx 问题
【发布时间】:2011-02-07 18:49:00
【问题描述】:

我在我的 windows 2003 Enterprise x64 上安装了 .net framework 4,编写了简单的 asp.net 4.0 应用程序(仅限 default.aspx 页面)。如果请求是针对 default.aspx,而不是根站点,则应用程序运行良好:

contoso.com/ - 不起作用(出现 404 错误)

contoso.com/default.aspx - 有效。

Default.aspx 在 IIS 的默认文档列表中。 请帮忙。

【问题讨论】:

    标签: iis-6 asp.net-4.0 default-document


    【解决方案1】:

    在看似无关的位置找到了修复程序 - 尝试将“EnableExtensionlessUrls”注册表项设置为 0:

    ASP.NET 4 Breaking Changes -> ASP.NET 2.0 Applications Might Generate HttpException Errors that Reference eurl.axd:

    在 Windows 注册表中,打开以下节点: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0

    1. 创建一个名为 EnableExtensionlessUrls 的新 DWORD 值。
    2. 将 EnableExtensionlessUrls 设置为 0。这将启用无扩展 URL 行为。
    3. 保存注册表值并关闭注册表编辑器。
    4. 运行 iisreset 命令行工具,这会使 IIS 读取新的注册表值。

    【讨论】:

    【解决方案2】:

    你会在这里找到答案 http://johan.driessen.se/archive/2010/04/13/getting-an-asp.net-4-application-to-work-on-iis6.aspx

    .Net 4.0 自身无法与 IIS 一起运行,因此您必须运行命令(在文件夹 c:\windows\system32 中): cscript iisext.vbs /EnFile C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll 或者在您的情况下,因为您正在运行 x64

    cscript iisext.vbs /EnFile C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll

    【讨论】:

    • .net 4.0 isapi 扩展已启用。网站工作正常。还是没有答案
    • 运行 cscript iisext.vbs /EnFile C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll 然后重启 IIS
    【解决方案3】:

    将 ASp.Net 版本从 4.0 更改为 2.0 并应用它。并将 Asp.Net 版本恢复到 4.0。这将解决问题。

    【讨论】:

      【解决方案4】:

      显然我没有足够的评论,但我想说 Will WM 的解决方案对我有用。将 EnableExtensionlessUrls 添加到注册表更正了该问题。

      附带说明,如果您在任何时候运行 aspnet_regiis,它将删除此值,您需要再次添加它。

      【讨论】:

        【解决方案5】:

        对于在 IIS 上的 ASP.NET 4 上运行的网站,我使用以下正则表达式作为 Ionics Isapi Rewriterfirst 规则6 解决由 ASP.NET 4 引入的breaking change 引起的问题:

        RewriteRule ^(.*)/eurl.axd/[a-f0-9]{32}(.*)$ $1$2
        

        这让我再次使用无扩展的网址。

        请注意,第二组捕获查询字符串(如果存在)并将其恢复到重写的 url。

        是的,它是a feature, not a bug

        【讨论】:

          【解决方案6】:

          你确定默认文档列表中的default.aspx不是default.asp吗?

          【讨论】:

          • 绝对。列表中的第一个数字
          • 是您自己添加的还是已经添加了?有没有可能是错字?
          【解决方案7】:

          如果您在同一站点上有另一个设置为 4.0 的虚拟目录并且 DefaultWebSite 设置为使用 ASP.NET 4.0,那么您也会在 IIS6 中的 ASP.NET 2.0 虚拟目录上收到此错误。

          解决方案是将 DefaultWebSite 改回 ASP.NET 2.0。您的 4.0 虚拟目录在该网站下仍然可以正常工作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-07
            • 2013-04-04
            • 2013-09-28
            • 1970-01-01
            • 1970-01-01
            • 2023-03-09
            相关资源
            最近更新 更多