临危不乱,.Net+IIS环境经常出现的问题及排障。

简介:

你是否经常会遇到以下的拦路虎,当你兴致勃勃地把调试好的程序发布到WEB服务器时,以下错误就出现了:
1、无法找到文件(404)白底黑字
2、没有权限访问该文件(403)白底黑字
3、直接弹出来一个要输入帐号密码的框框,然后你对着屏幕说:什么密码。
4、黄底黑字+红字的错误提示页(.Net)
5...
这些东东几乎占据了.Net+IIS搭建环境的绝大部分错误。
有时我们无意中覆盖一个“不起眼”的文件,上述错误就会蹦出来。碰巧该应用又是非常重要的应用,这足够让你接下来的一个小时冒冷汗。

不过光冒冷汗没用,引用一句话:错误不被你解决,你就有可能被错误解决。我们还是淡定下来解除这些错误吧。我们一项项的来:
1、无法找到文件(404)白底黑字
有以下这些可能性:
第一,你所访问的路径确实没有这个文件,或许你记错了位置,但它的确不存这个文件。解决办法:找到这个文件,去IIS所指向的目录中一层层找这个文件,并确认它存在。
第二,你的IIS没有认出来这个文件,没有该文件的解释器(IIS网站属性——主目录——配置——应用程序扩展)。IIS没有该程序的解释器,然后撒一个谎说没有这个文件。解决方法:打开(IIS网站属性——主目录——配置——应用程序扩展),添加应用程序的相关解释器。

第三,你有某个UrlRewrite在起作用,将你输入的URL给重定向到一个不存在的文件或目录。

。。。


2、没有权限访问该文件(403)白底黑字
有以下这些可能性:
你的NTFS文件夹没有给予WEB用户读取的权限。解决方法:打开计算机管理——本地用户和组——用户——添加用户,在这里添加一个用户,请记住该用户不要属于任何组,如下图所示:

添加新的用户时,密码先用记事本打出来,添加完成后,记事本不要关闭,这个密码在IIS里配置时还需要用到一次.

用户不需要属于任何组,不继承任何权限.

 之后,我们开始给WEB文件夹赋予权限了.顺便提一下,给WEB文件夹配置权限这个步骤很重要,见过很多站点被黑都是因为文件夹权限设置不当,要么过大,要么根本没有一站一用户,有些站点直接给EveryOne用户最大权限,甚至有些站长认为NTFS磁盘格式"根本没用",直接把网站所在的磁盘做成FAT32的,还有很多的虚拟主机商为了图省事,虽然做到了一站一户(软件生成),但是配置的权限过高,因为配置低权限有时候会出现运行故障....后果可想而知.我们遇到问题不要慌,特别是安全的问题.

配置文件夹权限的操作方式是:在WEB文件夹上点右键,选择属性——安全;

为了安全,我们要保证网站文件夹的初始权限状态是这样的:

 

为防止逐步提权。网站所在磁盘及磁盘中所有下属文件夹,除了你用于远程登录的最高管理员,其它的统统去掉。

 我们要向该文件夹添加2个用户权限:一个是刚刚添加的用户,用于WEB访问该文件夹,一个是系统内置用户Network Service,用于.net组件在本机运行时访问。

 

给文件夹添加用户的方法之一是单击“添加”——“高级”——“立即查找”,从结果列表中选择目标用户。

添加这些用户进入列表之后,还不算完,点击“高级”,然后选择某个用户,点击“编辑”,给这个用户分配权限,要说的东西限于篇幅,在这里我只给2点参考意见:

(1)WEB文件夹的权限再大也不能大过这个底线:如下图所示:

 

请记住,“完全控制”,“遍历文件夹/运行文件”,“更改权限”,“取得所有权”这四个权限绝不能赋给WEB用户。

(2)请根据需要给子文件夹配置各种不同的权限。例如:给用于上传文件的文件夹写入、删除等一系列权限,但为防止用户通过程序本身的上传机制上传木马,则应该在IIS中配置该文件夹执行权限为“无”:

程序中合法上传文件的文件夹请设置执行权限为“无”

3、直接弹出来一个要输入帐号密码的框框

这个问题其实很简单,第二点中就有介绍,因为我们把WEB文件夹的权限给了自定义的用户,从而导致IIS的默认用户失去了该权限,我们打开IIS,在目标网站上点击右键——属性——目录安全性——身份验证和访问控制栏点“编辑”,出来如下对话框:

IIS有默认的用户名设置,所以我们要重新配置。

点击“浏览”,选择我们在第二步中新建的WEB用户,然后粘帖记事本中存放的密码,点击确定之后还要再粘帖一次,确定就可以了。

现在刷新页面看看,应该可以正常浏览了。

 4、黄底黑字+红字的错误提示页

.net的所有错误如果没有被重定向到自定义页,所有的程序级错误都是诸如黄底+黑字或红字的错误信息,因为太常见,我就不截图浪费资源了,在这里,我只讲一下关于环境的,“Web应用程序当前不可用”,请打开IIS,有两个地方要修改:

1、右键网站属性,选择Asp.Net选项卡,在版本里选择正确的版本。

2、IIS主窗体左侧的“WEB服务扩展”中,选择相应的ASP.net扩展,并点击“允许”。

 

因为时间关系,且这篇文章老被意外打断,并且搜集证据,居然花了四天时间,效率可见相当之低!

以上四点,只是本人干活多年遇到的.Net+IIS环境主要环境问题汇总。希望大家多补充,不当之处恳请批评指正。

您可以转载本文,但请标明出处http://www.cnblogs.com/CoreCaiNiao/archive/2011/08/01/2123991.html


本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2011/08/02/2125117.html,如需转载请自行联系原作者

目录
相关文章
|
9月前
|
安全 API 开发者
让IIS支持.NET Web Api PUT和DELETE请求
让IIS支持.NET Web Api PUT和DELETE请求
|
9月前
|
开发框架 .NET
解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"
解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"
|
9月前
|
开发框架 .NET Windows
iis正确安装了,但是还是无法访问,这是iis和.net安装顺序问题,记录一下
iis正确安装了,但是还是无法访问,这是iis和.net安装顺序问题,记录一下
|
Python Windows
不错啊!用IIS web服务器搭建Python网站环境
不错啊!用IIS web服务器搭建Python网站环境
489 0
不错啊!用IIS web服务器搭建Python网站环境
|
前端开发 API 开发者
.NET Web应用配置本地IIS(实现Visual Studio离线运行与调试
.NET Web应用配置本地IIS(实现Visual Studio离线运行与调试
304 0
.NET Web应用配置本地IIS(实现Visual Studio离线运行与调试
|
开发框架 前端开发 jenkins
Windows+.Net Framework+svn+IIS在Jenkins上的自动化部署入门
主要介绍在jenkins如何安装SVN和MSBuild。
293 0
Windows+.Net Framework+svn+IIS在Jenkins上的自动化部署入门
|
开发框架 jenkins Java
Windows+.NetCore+git+IIS在Jenkins上的自动化部署入门
在windows系统使用jenkins做自动化部署
788 0
Windows+.NetCore+git+IIS在Jenkins上的自动化部署入门
|
开发工具 git
使用批处理(.bat)文件一键编译 .NET CORE 网站并发布至 IIS
向 IIS 发布网站的传统方式是:开发人员在开发机上对项目源代码编译并将生成的程序集复制到服务器上的网站目录中.在 .NET CORE 时代开启后,复制操作很容易因为文件占用而失败.
227 0
|
弹性计算 Windows
阿里云服务器上利用IIS部署.net网站(windows server2012r2系统)
本文介绍了在在一台新的阿里云服务器(windows server2012r系统)上,利用IIS发布net网站的教程,分享给大家。(还有代金券礼包领取,希望大家有所帮助)具体如下: 1.添加站点(1)创建连接池 (2)添加网站 添加网站这里,需要注意上图中这个画框的这个位置,ip地址这里,不要填 服务器的 公有ip地址 ,而是直接按照默认的写 全部未分配 ,端口这里,服务器的默认端口只有 80 。
阿里云服务器上利用IIS部署.net网站(windows server2012r2系统)