关于iis 6:IIS6上的ASP.net 4.0 default.aspx问题

ASP.net 4.0 default.aspx problem on IIS6

我在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中的默认文档列表中。请帮忙。


在似乎不相关的位置找到修复程序-请尝试将"EnableExtensionListURL"注册表项设置为0:

ASP.NET 4中断更改->ASP.NET 2.0应用程序可能会生成引用eurl.axd的httpException错误:

在Windows注册表中,打开以下节点:HKEY U本地计算机软件MicrosoftASP.NET4.0.30319.0

  • 创建名为EnableExtensionLessURL的新dword值。
  • 将EnableExtensionLessURL设置为0。这将启用无扩展URL行为。
  • 保存注册表值并关闭注册表编辑器。
  • 运行iisreset命令行工具,这会导致IIS读取新的注册表值。

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

    .NET 4.0不允许自己与IIS一起运行,因此您必须运行该命令(在文件夹C:WindowsSystem32中):cscript iisext.vbs/enfile C:windowsmicrosoft.netframeworkv4.0.30319aspnet_isapi.dll或者在您的情况下,因为您正在运行x64

    cscript iisext.vbs/enfile C:windowsmicrosoft.netframework64v4.0.30319aspnet_isapi.dll


    将ASP.NET版本从4.0更改为2.0并应用它。并将ASP.NET版本还原为4.0。这将解决这个问题。


    我使用以下regex作为iis 6上ASP.NET 4上运行的网站的IONICS ISAPI重写器的第一个规则,以解决由ASP.NET 4引入的中断更改引起的问题:

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

    这让我再次使用无扩展URL。

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

    是的,这是一个特性,而不是一个bug。


    显然,我没有足够的观点发表评论,但我想说的是,威尔·WM的解决方案对我有效。向注册表中添加EnableExtensionLessURL解决了该问题。

    另请注意,如果您在任何时候运行aspnet_regiis,它将删除此值,您需要再次添加它。


    如果在同一站点上的另一个虚拟目录设置为4.0,并且默认网站设置为使用ASP.NET 4.0,则在iis6中的ASP.NET 2.0虚拟目录上也会出现此错误。

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


    在默认文档列表中,您确定它是default.aspx而不是default.asp吗?