2011-10-04 83 views
4

我在.NET 4.0应用程序中有一个经典的asp应用程序。我已将默认文档设置为login.asp,但它不会自动重定向到它。整个应用程序运行良好,甚至如果我浏览它,甚至正确显示login.asp。asp默认文档不能在IIS7上工作

web.config中的默认文档部分是如下:

<defaultDocument> 
    <files> 
     <clear /> 
     <add value="login.asp" /> 
     <add value="index.html" /> 
     <add value="default.aspx" /> 
     <add value="Default.htm" /> 
     <add value="Default.asp" /> 
     <add value="index.htm" /> 
     <add value="iisstart.htm" /> 
    </files> 
</defaultDocument> 

我已经看过这个网站的其他类似的问题,但都没有多大的帮助。

回答

7

我终于发现问题所在,因为asp应用程序在使用.NET Framework 4.0的经典模式下被分配到应用程序池。

当我更改应用程序池以使用.NET Framework 2.0(在经典模式下使用管理管道)时,默认文档也开始工作了!

+0

您确定新的应用程序池处于经典模式吗?我忘了'system.webServer'部分只能在集成模式下工作。 –

+0

是的,我必须让它成为经典模式才能让asp应用程序正常工作。 – Shirlz

+0

你救了我的一周!该网站没有任何改变,但Windows更新肯定有些东西,因为该网站将以我的自定义'DefaultPage'开始。我没有更改管道模式,但将.NET版本设置为2.0.x后,网站再次加载。 – Gustav

5
  1. 确保已读/写Feature Delegation enabled为默认文档: 1.jpg

  2. DefaultDocument不重定向到文件(即URL不变)。它的作用类似于Server.Transfer函数 - 当请求根URL(http://sitename/)时执行该文件。可能会执行login.asp,但它有指示将登录用户重定向到不同的页面,或向他们显示不同的内容。

  3. 确保响应没有被缓存。清除缓存和Cookie,然后重试。

+0

谢谢你非常明确的说明。我终于发现问题是因为asp应用程序使用.net framework 4.0以经典模式分配给应用程序池。一旦我改变这个使用.net 2.0,默认文档也开始工作了! – Shirlz

1

今天我有一个全新的asp.net站点部署到Azure这个问题。我试着用IIS和搞乱我的web.config包括

<defaultDocument enabled="true"> 
    <files> 
     <clear /> 
     <add value="Index.html" /> 
    </files> 
</defaultDocument> 

原来我的问题是,文件>新建项目向导默认使用.NET 4.5.2,并没有完全在Azure中被支持。我重新编译使用.NET 4.5作为目标,现在一切正常!