本文目录一览:

  • 1、IIS6.0 IIS7.5应用程序池自动停止怎么办
  • 2、程序错误
  • 3、如何安装SQL Server+IIS与PHP调试
  • 4、ASP.NET 跨域共享Session的解决思路

IIS6.0 IIS7.5应用程序池自动停止怎么办

在日志中发现IIS7.5的应用程序池自动停止,同时访问网站提示:HTTP Error 503,The service is unavailable.. 的错误,搜遍整个互联网总算是解决了问题。小编也整理了IIS6及IIS7.5遇到此类问题汇总解决方法,欢迎大家尝试。

关于IIS6的(适于IIS7)解决方法

描述:

iis6应用程序池被自动禁用问题 Service Unavailable 应用程序池 \’DefaultAppPool\’ 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为 ………….

1.首先是打开IIS管理器.检查应用程序池,果然"DefaultAppPool"出错了.而且不是平常的停止的图标.

2.试着重启"DefaultAppPool"应用程序池,一浏览页面马上就关闭.

3.到了查看事件日志的时候了.发现了以下这类的日志

事件类型: 警告

事件来源: W3SVC

事件种类: 无

事件 ID: 1009

日期: 2008-6-24

事件: 16:12:33

用户: N/A

计算机: MAIL

描述:

为应用程序池 \’DefaultAppPool\’ 提供服务的进程意外终止。进程 ID 是 \’3160\’。进程退出代码是 \’0xffffffff\’。

4.会不会是默认的程序池出问题了?于是,尝试新建一个新的程序池.将默认网站的程序池改成新的.但是问题依旧.出现相似的日志.

事件类型: 错误

事件来源: W3SVC

事件种类: 无

事件 ID: 1002

日期: 2008-6-25

事件: 14:17:04

用户: N/A

计算机: MAIL

描述:

应用程序池 \’AppPool #1\’ 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。

5.再查找事件日志另一个日志引起了我的注意.如下:

事件类型: 错误

事件来源: DCOM

事件种类: 无

事件 ID: 10016

日期: 2008-6-24

事件: 16:12:33

用户: NT AUTHORITY/NETWORK SERVICE

计算机: MAIL

描述:

应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为

{A9E69610-B80D-11D0-B9B9-00A0C922E750}

)的 本地 激活 权限授予用户 NT AUTHORITY/NETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限。

6.有点戏了.看看CLSID 为 {A9E69610-B80D-11D0-B9B9-00A0C922E750} 是什么服务先.最后在下面的注册表项中找到它:

HKEY_CLASSES_ROOT/AppID/{A9E69610-B80D-11D0-B9B9-00A0C922E750}

7.名字刚好是"IIS Admin Service"

8.好了,找到是什么了.从"管理工具"中打开"组件服务",找到IIS Admin Service对比一下CLSID是否一致

9.确定是这个以后,接下来的就是为它增加NETWORK SERVICE权限了.

A启动和激活权限,点击\”自定义\”..

B.在用户列表中添加\”NETWORK SERVICE\”,

C.并给予本地启动和激活权限,保存退出.

另外,如果还是有问题,把“IIS wamreg admin SERVICE”也这样操作一下,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号

network service network service 分别给本地启动和激活权限。

2014年2月18日再补充:今日有网友向小编反馈他的解决方法,就是在Windows server 2008 R2 64位下使用PHP5.5.x版本,不用以上设置,也解决了此问题。

到此问题解决。

也有朋友提到,选项无法编辑,为灰色,应该怎么办?

这个是win2008 R2 x64的安全特性.一些核心系统组件只能允许本地帐号,TrustedInstaller有完全控制权限,而不是本地管理员组

要在Windows Server 2008 R2 上修改 “IIS Admin Service” ,你需要授予本地管理员组有注册表权限:

1.在组件管理器中查到IIS的appid

2.使用regedit,定位到HKEY_CLASSES_ROOTAppID{刚查到的ID}”

3.右键点击{刚查到的ID},选权限

4.在权限设置窗口中点高级,选择所有者标签,选中administrators为所有者

5.授予administrators组有读/写等所有权 注意:务必不要修改TrustedInstaller的权限

现在,重新执行组件管理器,可以修改权限了

程序错误

单击开始,单击运行,然后键入 DCOMCNFG。选择要自动运行的应用程序。应用程序名称如下所示:

Microsoft Word 2000/2002/2003 – Microsoft Word 文档

单击属性打开此应用程序的属性对话框。

单击安全性选项卡。验证使用默认的访问权限和使用默认的启动权限已选中。

单击身份标识选项卡。选择指定用户,并键入 一个管理员权限(你的ID) 的用户名和密码。

单击确定,关闭属性对话框并返回主应用程序列表对话框。

在“DCOM 配置”对话框中,单击默认安全机制选项卡。

单击访问权限的编辑默认值。验证访问权限中是否列出下列用户,如果没有列出,则添加这些用户:

SYSTEM

INTERACTIVE

Everyone

Administrators

YOUID—

IUSR_*

IWAM_*

* 这些帐户仅在计算机上安装有 Internet Information Server (IIS) 的情况下才存在。

确保允许每个用户访问,然后单击确定。

单击启动权限的编辑默认值。验证启动权限中是否列出下列用户,如果没有列出,则添加这些用户:

SYSTEM

INTERACTIVE

Everyone

Administrators

YOUID—

IUSR_*

IWAM_*

* 这些帐户仅在计算机上安装有 IIS 的情况下才存在。

确保允许每个用户访问,然后单击确定。

单击确定关闭 DCOMCNFG。

启动 REGEDIT,然后验证对于要自动运行的 Office 应用程序,是否存在下列注册表项和字符串值:

Microsoft Word 97/2000/2002/2003:

注册表项:HKEY_CLASSES_ROOTAppIDWINWORD.EXE

AppID:{00020906-0000-0000-C000-000000000046}

其实还有其他同类的错误:

Microsoft Access 2000/2002/2003:

AppID:{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}

Microsoft Access 97:

AppID:{8CC49940-3146-11CF-97A1-00AA00424A9F}

Microsoft Excel 97/2000/2002/2003:

AppID:{00020812-0000-0000-C000-000000000046}

Microsoft Word 97/2000/2002/2003:

AppID:{00020906-0000-0000-C000-000000000046}

改的方法同上面word的。

2)*******************

系统日志中的大量DCOM错误

内容如下:

Access denied attempting to launch a DCOM Server. The server is:

{00020906-0000-0000-C000-000000000046}

The user is Unavailable/Unavailable, SID=Unavailable.

这种错误只有在拨号上网的时候才发生,如果是通过网关上网,则没有这个问题。初步判断应该是不断的遭到攻击造成这个问题。于是用netstat命令检查上网时来自公网的Socket连接,发现1025端口和135端口很可疑。在防火墙中屏蔽了这两个端口后,问题解决。(只屏蔽一个端口似乎不能完全起作用,还会有一部分DCOM错误记录下来,只是频率降低了。)

系统日志中的大量DCOM错误之补充

今天发现还需要屏蔽TCP的445端口才能完全杜绝系统日志中的DCOM错误。

日志文件里出现DCOM错误码是因为我的防火墙的路由器的DMZ指向我的机器。把DMZ一关日志文件马上就没有出现DCOM错误,断定是第二类错误。

如何安装SQL Server+IIS与PHP调试

新增一台win2003 server系统的服务器。以前其他的服务器上使用php5.0/5.1,数据库是SQL Server 2000;本次则打算安装SQL Server 2005,php5.3.2;据了解,php5.3版本使用微软的FastCGI模式,这种模式和传统的CGI模式相比采用了更加合理的解析进程启动模式,速度比CGI快2倍;在PHP5.3以上的版本已经对ISAPI模式不支持。

在已经安装iis6和ms sql server 2005后,整个安装过程是

1.安装FastCGI;

2.安装php5.3.2;

3.安装SQL Server Driver for PHP 1.1驱动;

一、在服务器上安装FastCGI

在服务器上打开下面网址运行Microsoft Web 平台安装程序:

;appid=PHP%3bPHP%3bPHP

如图:勾选选web服务器/自定义/应用程序开发/FastCGI1.0,下一步直至FastCGI安装完成;

有关FASTCGI的官方说明文档:

二、安装php5.3.2

下载网址:

截图:

我们下载这里目前所见的最新版本php-5.3.2-Win32-VC9-x86.msi 到服务器上,VC6用于apache,vc9用于win2003 server iis等;熟悉php的程序员可以下载zip版自行配置;

运行php-5.3.2-Win32-VC9-x86.msi,安装中出现对话框,选择安装目录C:\\PHP,选择IIS FASTCGI;完成安装。

三、配置IIS支持PHP

1.FACTCGI安装后在c:\\windows\\system32\\inetsrv下有五个文件,其中有用的是:fcgtext.dll,fcgitext.ini;打开FASTCGI配置文件fcgitext.ini,在最后[Types]修改为这样的样式:

[Types]

php=PHP

[PHP]

ExePath=c:\\Php\\php-cgi.exe

2.打开IIS管理器,网站上点右键-属性-主目录-配置-添加fcgiext.dll为可执行文件,配置如下图

经过上述步骤,已经完成了PHP5.3.2在iis6上的安装;如果下载的是zip版,则需对php.ini文件进行配置;

之后,在iis里默认文档添加php。

四、安装SQL Server Driver for PHP 1.1驱动

SQL Server Driver for PHP 1.1驱动支持SQL Server 2005和 SQL Server 2008,目前最新的下载地址是:

;FamilyID=ccdf728b-1ea0-48a8-a84a-5052214caad9

系统环境:

Supported Operating Systems: Windows 2000 Service Pack 4; Windows 7; Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Vista Service Pack 1; Windows XP Service Pack 3

PHP 5.2.4, or later. For more information about downloading and installing PHP, visit .

Microsoft SQL Server 2008 SQL Server Native Client. You can download SQL Server Native Client from a SQL Server 2008 Feature Pack.

Any edition of SQL Server 2005 or SQL Server 2008.

A Web server configured to run PHP.

1.下载后文件名为SQLServerDriverForPHP11.EXE,解压如图:

2.拷贝驱动php_sqlsrv_53_ts_vc9.dll到相应的位置PHP目录下ext文件夹内;

3.配置的时候若需要配置一个PHP的扩展,此扩展需要将相关的dll文件全部复制到PHP的扩展目录里面,然后通过修改php.ini来实现PHP的扩展,在php.ini里面需要指明扩展路径,一般情况是在最末尾添加一行,所以修改php.ini实现扩展:

在php.ini的一大堆;extension=**.dll格式里面添加一行,此部分位于以下注释下边一般:

; Windows Extensions

; Note that ODBC support is built in, so no dll is needed for it.

; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)

; extension folders as well as the separate PECL DLL download (PHP 5).

; Be sure to appropriately set the extension_dir directive.

添加的一行内容为:

extension=php_sqlsrv_53_ts_vc9.dll

保存php.ini后拷贝一份到windows目录下;

选择php_sqlsrv_53_ts_vc9.dll的原因在于,php_sqlsrv_53_ts_vc9.dll是线程安全的驱动,如果服务器本身的环境是使用的php5ts.dll,对应的就用这个驱动;

4.测试配置环境:

整个过程操作好了过后,写一个test.php测试一下配置的相关环境,测试代码如下:

?php

phpinfo();

?

若出现下图则说明已经成功启用FastCGI:

若出现以下图片证明php5.3.2连接到ms sql server 2005数据库配置好了:

安装后根据自己需要再对php.ini进行设置,重启IIS就可以了。

注:如果安装sql server 2005时没有安装SQL Server Native Client 10.0 2007.100.2531.00,则php连接数据库是会有odbc数据源未设置之类的错误提示,那么就需要安装Microsoft SQL Server 2008 Native Client(2005和2008都适用)

下载地址:

X86 Package (sqlncli.msi) – 4504 KB

X64 Package (sqlncli.msi) – 7919 KB

IA64 Package (sqlncli.msi) – 11078 KB

安装后在服务器上数据源ODBC里会出现SQL Server Native Client 10.0,如图

至此,全部安装结束,可以开始编程了;

ASP.NET 跨域共享Session的解决思路

1.首先简要说说asp.net 的session机制,当客户端向服务端发生会话时(不是访问了网站某页面就一定产生了会话),服务端会写一个cookie到客户端,这个cookie保存着sessionid ,名字为“ASP.NET_SessionID” ,在下一次发生向服务端的请求时这个cookie会包含在请求头中,这个cookie仅仅包含了sessionid ,其他信息以(某种形式)保存在服务端并被sessionid标识。 2.因为我们要实现两个域的session共享,我们采用的方式是session的值保存在SqlServer数据库中(至于为什么要保存在SqlServer数据库中,这里不做探讨),如何用数据库保存session的资料可以很轻易的在博客园中找到,子秋的博客中有记 3.表ASPStateTempApplications有两个字段 ,一个appid ,一个appname ,一个应用程序相当于一个网站,这个表中的数据会在网站第一次被访问并产生session时添加,一个网站会产生一条记录,ASPStateTempSessions 表才是真正保存会话信息的表,有个二进制数据类型的字段用来保存session数据,还有创建时间过期时间的字段,当然少不了主键标识字段,也就是sessionid, 注意了!这个sessionid 的保存会在真正的sessionid上加个后缀 ,后缀是相应的ASPStateTempSessions表中应用程序id的十六进制表示形式,这样的话,如果两个应用程序不小心产生了同样的sessionid 也不会出现问题,因为还有后缀标识。 4.问题出来了,如果让两个域(既是两个应用程序,两个网站)产生同样的sessionid 并且让应用程序名一样,不就可以共享session了吗?这样一来又有问题了?a.会话sessionid是保存在名字为“ASP.NET_SessionId”的cookie中的,我们知道cookie是不能跨域的,但是我们有方法让他能够夸二级多级域名,注意:主域名还是不能跨的方法就是该cookie的主机名,具体代码如: HttpCookie co = Request.Cookies[\”ASP.NET_SessionId\”]; co.Domain = \”.mysite.com\”; Request.Cookies.Set( co ); 这一步只让sessionid 一样了呀,还差一步,就是让应用程序名一样 b.如何让应用程序名一样呢 ,我们分析ASPStateTempApplications这张表中的记录是如何的来的,上面也有简单提到,具体分析后,发现记录是通过存储过程TempGetAppID插入的, 我们将其改为: 代码 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[TempGetAppID] @appName tAppName, @appId int OUTPUT AS SET @appName = \’fejerry\’ — LOWER(@appName) SET @appId = NULL SELECT @appId = AppId FROM [ASPState].dbo.ASPStateTempApplications WHERE AppName = @appName IF @appId IS NULL BEGIN BEGIN TRAN SELECT @appId = AppId FROM [ASPState].dbo.ASPStateTempApplications WITH (TABLOCKX) WHERE AppName = @appName IF @appId IS NULL BEGIN EXEC GetHashCode @appName, @appId OUTPUT INSERT [ASPState].dbo.ASPStateTempApplications VALUES (@appId, @appName) IF @@ERROR = 2627 BEGIN DECLARE @dupApp tAppName SELECT @dupApp = RTRIM(AppName) FROM [ASPState].dbo.ASPStateTempApplications WHERE AppId = @appId RAISERROR(\’SQL session state fatal error: hash-code collision between applications \’\’%s\’\’ and \’\’%s\’\’. Please rename the 1st application to resolve the problem.\’, 18, 1, @appName, @dupApp) END END COMMIT END RETURN 0 给一个固定的应用程序名,不管什么网站,只要以当前SqlServer作为session存储机制,都会记录为同一个应用程序,换句话说,就是表ASPStateTempApplications将只会有一条记录。 5。我这人喜欢钻牛角尖,这条记录是什么时候插入到数据库的呢?于是我手动删除了这条记录,但是即使删除了,仍然不影响应用程序的使用,不影响session的共享,于是我又把应用程序(网站)重启了, 对网站产生第一个会话后,我又去观察表ASPStateTempApplications,奇怪了,仍然一条记录都没有。 于是很自然的我把iis给重启了, 再对网站产生第一个会话后,又去观察表ASPStateTempApplications,出现了,出现了,终于出现了一条新的记录。总结:表ASPStateTempApplications中的记录是在应用程序产生第一个会话时执行存储过程 TempGetAppID产生的,(并且大胆猜测这条记录的信息也保存在iis中,依据是删掉表中记录也无影响)。

关于iisappid和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。