Posts Tagged ‘iis’

asp.net 网站目录所需的权限 Server Application Unavailable

打开ASP.NET 网页出现:
Server Application Unavailable
The web application you are attempting to access on this web server is currently unavailable. Please hit the “Refresh” button in your web browser to retry your request.
Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur.

系统日志出现

事件类型: 错误
事件来源: ASP.NET 2.0.50727.0
事件种类: 无
事件 ID: 1088
日期:  2010-4-6
事件:  21:44:43
用户:  N/A
计算机: XXXXXXX
描述:
Failed to execute request because the App-Domain could not be created. Error: 0x80070005 拒绝访问。 

事件类型: 错误
事件来源: ASP.NET 2.0.50727.0
事件种类: 无
事件 ID: 1334
日期:  2010-4-6
事件:  21:44:43
用户:  N/A
计算机: 4B9JBIX9M9UC98G
描述:
Failed to initialize the AppDomain:/LM/W3SVC/318331351/Root/en

Exception: System.IO.FileLoadException

Message: Could not load file or assembly ‘System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. 拒绝访问。

StackTrace:    at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(String assemblyName, String typeName)
   at System.AppDomain.CreateInstance(String assemblyName, String typeName)
   at System.AppDomain.CreateInstance(String assemblyName, String typeName)
   at System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)
   at System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)

解决办法,该问题主要是由于网站文件夹权限问题引起,该网站文件夹下添加下面几个用户可以解决。

ASP.NET
IWAM_XXXXXXXX  该用户为默认的IIS站点用户。可以换成其他的。
Local_Service
Network_Service
System

IIS一键重启BAT

@ECHO off
@Title IIS6重新启动
net stop w3svc
net stop iisadmin /y
net start w3svc

 

保存为 .BAT格式,就行

IIS6为iis5方式的隔离模式运行

 使用windows2003中的IIS6有两种模式,一种是按新的权限模式,据说提高了系统的安全性,另一种就是按以前的iis5方式运行,在administrators组用户权限下运行,此种方式比较危险.但如果在内网上使用,配置也比较方便.
由于安装w2k3时缺省是第一种模式,因此修改为第二种模式的步骤如下:

1. 首先确认你的w2k3操作系统安装了asp.net和iis
2. 然后在命令行将aspnet用户添加到administrators组中:
       net localgroup administrators aspnet /add
3. 然后设置IIS的运行模式为iis5的隔离模式, 步骤如下: 
iis.gif
      打开IIS管理器, 展开机器名的节点,然后在"站点"(或Site)上单击右键打开"属性"菜单

IIS6+PHP5+MySQL5安装

一:软件准备:

1. PHP(PHP-5.2.11)

http://cn2.php.net/get/php-5.2.11-Win32.zip/from/a/mirror

php-5.2.11-Win32.zip

 

2. MySQL(5.4.2)

http://dev.mysql.com/downloads

mysql-essential-5.4.2-beta-win32.msi

 

3. PHPMyAdmin

phpMyAdmin-3.2.0.1-all-languages.zip

 

 

二:软件安装设置:

 

1. PHP安装:

php-5.2.11-Win32.zip解开压缩之后,放置到C:\public\php-5.2.11-Win32中。

1.1 DLL文件copy:

将C:\public\php-5.2.11-Win32目录下的所有dll文件copy到c:\Windows\system32下.

 

1.2 可执行文件和ini文件的copy:

将C:\public\php-5.2.11-Win32目录下的php.exe、php-win.exe和php.ini-dist三个文件拷到C:\Windows ( Windows 2000 下为 C:\WINNT)下;将C:\Windows\php.ini-dist改名为php.ini.

1.3. 修改PHP ini文件:

使用UltraEdit打开C:\Windows\php.ini

 
register_globals = Off
 

,将 Off 改成 On ;
 
extension_dir =
 

,并将其路径指到你的 PHP 目录下的 extensions 目录,比如:extension_dir = "C:\public\php-5.2.11-Win32\ext" ;
搜索找到
 
;Windows Extensions
 

将下面列举的

 
;extension=php_dbase.dll
 

可选

 
;extension=php_gd2.dll
 

这个是用来支持GD库的,一般需要,必选

  
;extension=php_ldap.dll
 

可选

 
;extension=php_mbstring.dll
 

这不选一般用PHPMYADMIN会出红色提示,故必选

   
;extension=php_mssql.dll
 

这个是用来支持MSSQL的,可选

   
;extension=php_mysql.dll
 

这个是用来支持MYSQL的,要支持MYSQL必选
将这些前的";"去掉,其他的你需要的也可以去掉前面的;然后关闭保存该文件。
 
 
2. IIS配置:
IIS安装很简单,但要让它支持PHP,则需要做进一步配置。
 
PHP 支持 CGI 和 ISAPI 两种安装模式,推荐使用 ISAPI 模式。这里只解介绍 ISAPI 模式安装方法:
 

 

2.1: 添加ISAPI筛选器:

在“控制面板->性能和维护->管理工具->Internet 信息服务"中选择"默认网站"。停止之。

反键点选"默认网站"->属性->ISAPI筛选器,添加筛选器。

筛选器名称:":PHP"

可执行文件:"C:\public\php-5.2.11-Win32\php5isapi.dll"

Sam: 这里是给IIS指出:遇到PHP,使用php指定的筛选器.

 

2.2: 添加应用程序映射:

反键点选"默认网站"->属性->主目录->配置,添加应用程序映射。

.php和C:\public\php-5.2.11-Win32\php5isapi.dll。

Sam:这里给IIS指出:遇到.php文件,使用何种程序解析之。

 

2.3: 添加文档index.php

反键点选"默认网站"->属性->文档

添加一个index.php.

可以将 index.php 升到最高优先级,这样,访问站点时就会首先自动寻找并打开 index.php 文档.

 

2.4. 重新启动IIS:

net stop w3svc
net stop iisadmin
net start w3svc

 

2.5.写index.php.

首先在反键点选"默认网站"->属性->主目录下看本地路径,通常为:C:\Inetpub\wwwroot

则在这个目录中建立:一个index.php,内容如下:

<?php
phpinfo();
?>

 

此时,IIS已经支持PHP。

使用浏览器:http://localhost

 

IIS站点采用独立应用程序池的好处

   每一个站点分配一个应用程序池,在站点启动以后会在系统中创建一个独立的进程(w3wp.exe),这样即使一个站点因为某些原因“挂了”,而其他站点丝毫不受影响。

       我们经常会看到网站访问时出现:”Service Unavailable”,这个一般就是由于网站空间所在的应用程序池发生错误或者进行回收造成的。

使用这种方法也是要付出代价的,因为他增加了额外的服务器开销,需要分配更多的内存,更多的CPU使用率。

IIS默认浏览文件支持中文命名

 

 1、在客户端修改IE设置
把"总是以UTF-8发送URL"设置为不选中。
2、在Web服务器端修改注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\INETINFO_PARAMETERS\FAVORdbCS 把1改成0,之后重新启动IIS即可。
如果此值已经是0,仍然无法支持中文路径,那么可能是URLSCAN为防止UNICODE漏洞而拦截了。
那么:
对winnt\system32\inetsrv\urlscan\URLSCAN.INI文件进行修改,
原为
AllowHighBitCharacters=0      ; if 1, allow high bit (ie. UTF8 or MBCS) characters in URL
改为
AllowHighBitCharacters=1       ; if 1, allow high bit (ie. UTF8 or MBCS) characters in URL

  重新启动IISADMIN。

改变IIS错误输出的默认编码

办法1]
自己处理错误,不让iis来处理。
在所有可能出错的地方,都用类似下面的方式来捕捉。
On Error Resume Next
Err.Raise 6     ‘这行是可能出错的代码
If Err Then
     Response.Write Err.Description
     Response.End
End If
On Error Goto 0

[办法2]
改变iis错误信息输出默认编码。
1)       将c:\winnt\help\iishelp\common\500-100.asp拷贝到网站(根)目录下
2)       将这个文件修改为utf-8编码。
3)       头部加上 @codepage=65001
4)       option explicit后面加上一行response.charset="utf-8"
5)       将Session.Codepage = 936改为Session.Codepage = 65001
6)         配置iis,设置“自定义错误页面”,将500;100的类型设为URL,同时URL设为   /500-100.asp

7)         将500-100.asp另存为utf-8编码

百度快照时间按HTML的最后修改时间来显示的

这个也是在无意中发现的,由于前几天那个破服务器出先点问题,IIS建了了,但是没有配置,几个垃圾破站访问过去就是直接的IIS默认的网站建设中的页面。昨天无意中SITE了下站点,竟然发现快照变成2003-2-21 百度快照 了,起先还以为,这个域名原来是不是被人做过站呢,后来SITE了另外一个垃圾站,发现也是这个快照日期,后来马上想到,原来这个正是,那个IIS默认页的最后修改日期。

不知道是百度出错呢,还是他本来就这样的。不过这个百度快照显示的日期,和HTML页面生成的日期肯定有关系。

 

IIS Worker Process 错误解决办法

IIS Worker Process 遇到了一个问题,需要关闭。

第二个对话框还有个请单击此处的连接

以下文件将包含在这个错误报告中:
C:DOCUME~1ADMINI~1LOCALS~1Temp1WERc935.dir00w3wp.exe.mdmp
C:DOCUME~1ADMINI~1LOCALS~1Temp1WERc935.dir00appcompat.txt

解决方法

1、运行命令 net stop w3svc 停止IIS进程
清理这个目录C:Documents and SettingsAdministratorLocal SettingsTemp

2、看应用程序日志.IIS相关的.有详细的错误说明和解决方法地址.
3、检查一下你的进程池设置.

上述是结果最多的一种解决办法,事实上来,基本等于没说;报这个错误,是没错,很多有这个出现“IIS Worker Process 遇到了一个问题,需要关闭”这个问题后,重启服务器时,就会报这个日志错误,发送给微软官方来供分析处理。如果选择不发送,刚上面temp目录中的文件,都会自动清除,根本不用清理。事实上,出现这个问题时,有时候系统日志是没有具体的错误记录的。进程池中的设置,与此也无关,因为我默认的设置,却是出现这个问题。

第二个处理方案是:

很多时候我们的处理方法都是直接重装IIS.卸载.net 2.0但效果不是很明显.彻底的处理方法就是新建管理员账户.或删除 C:Documents and Settings你的管理员用户名 文件夹下的 NTUSER.DAT文件.这个文件的作用是保存用户配置信息.登录后会重新建立.

依上述看来,似是和用户配置有关系,但这个处理方法,我也没有具体测试,但依经验分析,似不是这方面问题。

在精品技术(ccf)论坛
iis运行过程中触发了DEP错误。DEP的功能是防止恶意代码通过缓冲区溢出来进行攻击。所以系统就报告了这个错误

这个判断,倒是有可能,只是没看到解决方案,因此只限于以后对此方面多加注意,有环境测试了,可以试试。有关DEP错误方面,这里可以看到有关设置

1.要打开“系统属性”,请依次单击“开始”、“控制面板”,然后双击“系统”。
2.单击“高级”选项卡,在“性能选项”下,单击“设置”。
3.单击“数据执行保护”选项卡。
4.选择“只为关键windows程序和服务启用数据执行保护”。

IIS修复工具,怎么完全卸载IIS

IIS修复IIS出现错误后如何完全重装  
 有的时候IIS出现严重错误,比如metabase坏掉,又没有备份…. 

一般的做法,直接在控制面板添加删除程序中卸载IIS重装。 

这样并不是保险的做法,很多人在重装IIS后问题依旧。 

所以建议在任何情况下都用以下步骤重新安装IIS: 

1、把IIS卸载。 
2、把 %windir%system32inetsrv 删除。 
3、把%windir%iisX.log删除,X 是IIS版本。 
4、把 inetpub 目录删除。 
(以上操作可以在安全模式中进行。) 
5、重装IIS。 

    
如何排除IIS不能显示ASP网页分类:默认栏目 
在分析问题以前,先尝试访问网站中的纯静态网页(以htm或者html为后缀的页面),如果不能正常显示,说明问题本身不在ASP上。  

检查IIS的设置,看是否设置了“应用程序设置-执行权限-纯脚本”,“配置-映射”里有asp扩展名。IIS设置检查无误后,再进行后面的步骤。 

1、如果网站本身有Global.asa,先把它更名为Global.old,重新启动该网站。用记事本写下代码并保存为test.asp文件,在浏览器中访问。如果能够正常显示,说明问题出在Global.asa文件上。 

2、设置应用程序保护到“低”,重新启动IISadmin线程,如果这时能够在浏览器中读出ASP页面,说明IWAM帐号存在问题。如果仍旧不能访问ASP页面,检查“管理工具”的“组件服务”,确保你能够看到IIS包。 

附:如果遇到组件服务打不开(可能是由于应用程序占满CPU造成),在控制面板的添加与删除,重新添加删除组件服务,然后重新启动计算机。 

3、将应用程序保护返回到“中”或“高”,添加IWAM帐户到Administrator组,如果这时候ASP页面能够被浏览,说明IWAM存在一个权限问题。如果ASP仍然不能正常显示,进DOS窗口用命令行的方式运行Synciwam.vbs工具。 
C:Inetpubadminscripts>cscript synciwam.vbs 

4、解决IWAM帐号的权限问题,嗯,这个说起来话长,以后单独发表一篇文章。 

5、重新建立IIS packages的方法: 
在组件服务中删除下列包 
IIS In-Process Applications 
? IIS Out-of-Process Pooled Applications 
? IIS Utilities 
用DOS窗口键入下列命令重新建立包 www.ssqyu.cn
%windir%system32inetsrv rundll32 wamreg.dll, CreateIISPackage 
关掉组件管理器然后重新打开,看到三个新建的包后,重新启动IIS(IISRESET),检测ASP网页是否能够正常浏览 

778