iis权限设置及故障排除
1、这里有篇文章(虚拟一个win2003做服务器运行asp.net程序,共享文件夹权限问题)认为是共享文件夹权限的问题,不过我都可以在虚拟机里直接创建.aspx文件,并且把网站程序直接复制到虚拟机里也是同样情况,所以可以确定是IIS问题而不是共享文件夹权限问题。(后来证实在虚拟机里直接创建aspx是可以的,确实是虚拟机的共享文件夹问题)
2、也非目录文件名问题,我把共享文件夹的文件路径全部都设为英文,仍然是那个错误。
3、甚至我还按这里说的放到根目录下,作为一个虚拟目录而不是网站,也不行。
4、按这里说的把文件所在的目录设置为应用程序,在属性-主目录中设置,却出现了另外一种情况:
服务器应用程序不可用
您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。
管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到。请检查此日志项以查明导致该错误发生的原因。
5、后来我还是把网站文件移到虚拟机中 ,新建了一个站点,没有进行其他配置,无意竟发现可以了,一切正常。
查看了下正常状态下的权限和应用服务器设置,现在,可以找出这个问题的真正原因了:
IIS6.0的默认设置是(我推算出来,而且还再虚拟了个2003才验证得出的结论啊):
1、默认网站的权限安全里没有everyone组
2、aspnet_client及下级目录的权限安全里有everyone组
3、默认网站有创建一个应用程序“默认应用程序”
4、aspnet_clent没有应用程序,需要自己创建。
5、新建站点或目录没有everyone组。无论此站点或目录的上级文件夹是否有everyone权限。(第一次新建站点或目录都只开放Administrators跟system权限)
6、新建站点或目录会新建应用程序,无论此应用程序的上机目录或网站是否有应用程序。
7、 但IIS有个特性,就是创建新站点时的权限并非按他默认的设置,而是按你上一次的设置而创建。比如上次如果给某个网站开放everyone权限,那么这次 新建的网站就会是everyone权限的。反之则创建的网站或目录没有everyone权限。上面的3、4两点就失效了。
8、不过应用程序设置并无这个特性,新建站点或目录时都会自动创建应用程序。
而aspx网站需要正常运行的配置为:
1、权限安全组里必须包含ereryone。而IIS6里的那个“默认网站”下的aspnet_client目录安全里就有everyone权限 组,所以才如上面第三点说的,有人把网站放到默认网站的目录下就可以了。注意:“默认网站”安全里并无everyone组,所以我之前做的把网站放在跟 aspnet_client并列的目录是不行的,因为那样跟随的就是“默认网站”的目录安全设置,没有开放everyone权限。
2、必须创建应用程序,不管是网站还是虚拟目录。不过默认其实都是帮我们创建好的,
错误速查:
1、.html可正常访问,访问.asp出现:HTTP/1.1 新建应用程序失败;访问aspx文件出现:
无法显示网页
您正在查找的页当前不可用。 网站可能遇到支持问题,或者您需要 调整您的浏览器设置。
….
找不到服务器或 DNS 错误
Internet Explorer
则是整个站点都没有创建应用程序(不管整个站点是不是everyone权限)
2、.html可正常访问,.asp可正常访问;而任何.aspx都出现:
服务器应用程序不可用
您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。
管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到。请检查此日志项以查明导致该错误发生的原因。
则应该是整个网站或整个目录都没有everyone权限(肯定有创建应用程序,否则就是上面的那种情况了)
4、.html可正常访问,.asp可正常访问;而.aspx正常或出现:
“/”应用程序中的服务器错误。
——————————————————————————
配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。
分析器错误信息: 加载配置文件时出错: 由于访问被拒绝,未能开始监视对“C:\Inetpub\wwwroot\chenfangyi.com\web.config”的更改。
源错误:
[没有相关的源行]
源文件: C:\Inetpub\wwwroot\chenfangyi.com\web.config
——————————————————————————
版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832
这就是我一开始出现的问题。这样则说明该站点(上级的上机目录)有应用程序,有两种可能:(1)、当前虚拟目录既没有创建 应用程序也没有开放everyone目录(比如开始时我把虚拟目录架设在默认网站下,就是这个情况)。(2)、虽然有创建应用程序,但权限无法更改(比如 我开始时把网上邻居里的目录设为网站或者某个目录就老出现这个情况) 。
第一种情况很好解决,为此目录开放everyone权限并创建应用程序即可。而第二种情况暂时还无法解决。
5、html可正常访问,.asp可正常访问;而.aspx出现:
“/chenfangyi.com11”应用程序中的服务器错误。
——————————————————————————
配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。
分析器错误信息: 在应用程序级别之外使用注册为 allowDefinition=’MachineToApplication’ 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。
源错误:
行 9:
行 10:
行 11:
行 12:
行 13:
源文件: C:\Inetpub\wwwroot\chenfangyi.com\web.config
显示其他配置错误:
在应用程序级别之外使用注册为 allowDefinition=’MachineToApplication’ 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。 (C:\Inetpub\wwwroot\chenfangyi.com\web.config line 14)
——————————————————————————
版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832
或类似的“应用服务器错误”,那说明是站点(上级的上机目录)有应用程序,但当前虚拟目录却没有创建应用程序。为此目录创建应用程序即可解决。
6、.html可正常访问,.asp可正常访问;而.aspx正常或出现:
“/”应用程序中的服务器错误。
——————————————————————————
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误信息: ASPNET: 请确保此代码文件中定义的类与“inherits”属性匹配,并且该类扩展的基类(例如 Page 或 UserControl)是正确的。
源错误:
行 10: using System.Web.UI.HtmlControls;
行 11:
行 12: public partial class Default : System.Web.UI.Page
行 13: {
行 14:
源文件: c:\Inetpub\wwwroot\chenfangyi.com\Default.aspx.cs
显示详细的编译器输出:
或类似的错误,则说明IIS设置正常,只是普通的aspx页面代码错误。