我在我的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中的默认文档列表中。 请帮忙。
答案 0 :(得分:20)
在看似无关的位置找到修复程序 - 尝试将“EnableExtensionlessUrls”注册表项设置为0:
在Windows注册表中,打开以下节点: HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ ASP.NET \ 4.0.30319.0
答案 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虚拟目录仍然可以在该网站下运行。