IIS6上的ASP.net 4.0 default.aspx问题

时间:2010-04-14 06:33:38

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

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

7 个答案:

答案 0 :(得分:20)

在看似无关的位置找到修复程序 - 尝试将“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 \微软\ ASP.NET \ 4.0.30319.0

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

答案 1 :(得分:4)

你会在这里找到答案 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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

作为旁注,如果您随时运行aspnet_regiis,它将删除此值,您需要再次添加它。

答案 4 :(得分:1)

我在 IIS上的 ASP.NET 4 上运行的网站上使用以下正则表达式作为第一个规则与 Ionics Isapi重写器 6 解决由ASP.NET 4引入的breaking change引起的问题:

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

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

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

是的,它是a feature, not a bug

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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

相关问题