关于web服务器维护

 

HTTP 错误 500.19 - Internal Server Error

无法访问请求的页面,因为该页的相关配置数据无效。详细错误信息模块 IIS Web Core

通知 BeginRequest

处理程序尚未确定

错误代码 0x800700b7

配置错误在唯一密钥属性“name”设置为“ASBXHandler”时,无法添加类型为“add”的重复集合项 

 配置源

   61:                       <remove name="ScriptResource"/>

   62:                       <add name="ASBXHandler" verb="GET,HEAD,POST" path="*.asbx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

   63:              </handlers>

 

 

 

这个错误很神奇,第一天的时候我访问某页面是一直提示出错,但是访问其他页面正常,很多人说是目录权限、域等等问题,解决不了,想第二天再看看。第二天在解决其他事情的时候发现由于前一天我将数据库中的表删除重建后并没有给其赋权限,于是给这些表grant上权限,解决那问题之后,我想再看看这个,一访问就正常了。前一天下班之前还是不行的,第二天一上班改的就只有数据库了,难道是web服务器有自愈功能?

我想这可能是数据库验证权限的问题,是否因为对该表没了读,写,修改,删除等这些权限时,该脚本访问数据库表时便出现了

HTTP 错误 500.19 - Internal Server Error 。有一个我很想知道是什么,就是“ASBXHandler”。

 

 

为应用程序池“Classic .NET AppPool”提供服务并且进程 ID 为“4820”的工作进程因不活动而被关闭。应用程序池超时配置被设置为 20 分钟。需要时将启动一个新工作进程。

因为应用程序池设置了闲置时间为20分钟,所以如果20分钟内没有请求该线程就会被释放,所以会触发这个事件。

这个是不影响你的程序运行的。

 

 

 

为应用程序池“Classic .NET AppPool”提供服务的进程未能响应 Ping。进程 ID 是“4576”。

 

经典的.net 应用池

应用池即应用程序池
在Microsoft IIS6中引入了应用程序池,这是微软的一个全新概念:应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。

 

 

1.Web访问错误类

1) 文件或目录未找到。

如果出现以下错误界面,可能是ASP.NET没有启用,在IIS管理器中Web服务扩展下将ASP.NET v2.0.50727 设为允许。(注:该处涉及地址仅为演示地址。)

 

 

 

(2) 请求提供服务所需配置文件时出错。行2出错。

无法识别的属性“xmlns”。(注:该处涉及地址仅为演示地址。)

错误界面:

解决方法:

打开IIS管理器,右击“PACS”网站,点击“属性”,在弹出的对话框中选择“ASP.NET”,将下面的“ASP.NET version”选择为“2.0.50727”。最后点击“应用”——“确定”退出。

 

 

(3) 请求提供服务所需的配置文件错误。Line 32错误。

错误界面:(注:该处涉及地址仅为演示地址。)

只是因为访问请求服务,找寻不到相应服务,因为这是根据系统环境而定,消去。

打开网站主目录下的Web.config,寻找到下面三行,用<!--…..-->屏蔽便可。

 

 

(4) 禁止访问:执行访问被拒绝。

访问网页时显示“您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序。” (注:该处涉及地址仅为演示地址。)

 错误界面:

 

目录权限问题,查看该网站的根目录是否有执行CGI、ISAPI 或其他可执行程序的权限。

打开控制面板->管理工具->Internet 信息服务->WEB站点属性的主目录选项卡,把执行许可的选项从无改为纯脚本。

 

 

 

(5)Web 错误,验证视图状态MAC失败。

 

试着关闭 ASP.netstate service 这个服务。我关闭后web访问就正常了。

 

 

 

(6)IIS7.0错误代码 0x800700b7 HTTP 错误 500.19

无法访问请求的页面,因为该页的相关配置数据无效。 详细错误信息模块 IIS Web Core

通知 BeginRequest

处理程序 尚未确定

错误代码 0x800700b7

配置错误 在唯一密钥属性“name”设置为“ASBXHandler”时,无法添加类型为“add”的重复集合项 

配置文件\\?\D:\PACSWEB\PACSWeb11-16\Clinic\web.config

请求的 URLhttp://192.168.8.22:80/Clinic/PacsInterface.aspx?patient_id=159532

物理路径D:\PACSWEB\PACSWeb11-16\Clinic\PacsInterface.aspx

登录方法 尚未确定

登录用户 尚未确定

 配置源

   61:            <removename="ScriptResource"/>

   62:            <addname="ASBXHandler" verb="GET,HEAD,POST"path="*.asbx" preCondition="integratedMode"type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>

   63:        </handlers>

 链接和更多信息当读取 Web 服务器或 Web 应用程序的配置文件出现问题时,就会发生此错误。在某些情况下,事件日志会包含有关导致此错误的原因的更多信息。

查看更多信息 »

 

 

 

第一天的时候我访问某页面是一直提示出错,但是访问其他页面正常,很多人说是目录权限、域等等问题,解决不了,想第二天再看看。第二天在解决其他事情的时候发现由于前一天我将数据库中的表删除重建后并没有给其赋权限,于是给这些表grant上权限,解决那问题之后,我想再看看这个,一访问就正常了。前一天下班之前还是不行的,第二天一上班改的就只有数据库了,难道是web服务器有自愈功能?

我想这可能是数据库验证权限的问题,是否因为对该表没了读,写,修改,删除等这些权限时,该脚本访问数据库表时便出现了

HTTP 错误 500.19 -Internal Server Error 。有一个我很想知道是什么,就是“ASBXHandler”。

 

(7)IIS7.0错误代码0x80070021  HTTP 错误 500.19

错误摘要

HTTP 错误500.19-Internal Server Error

无法访问请求的页面,因为该页的相关配置数据无效。

详细错误信息

模块 IIS Web Core

通知 BeginRequest

处理程序 尚未确定

错误代码 0x80070021

配置错误
不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含
overrideMode="Deny" 或旧有的allowOverride="false" 的位置标记明确设置的。

配置文件
\web.config

请求的 URL http://127.0.0.1:80/

物理路径

登录方法 尚未确定

登录用户 尚未确定

配置源

82:        </modules>

83:        <handlers>

84:            <remove
name="WebServiceHandlerFactory-Integrated" />

出错原因:安装了IIS之后没有注册.NET

解决办法:安装IIS后注册.NET

第一步:运行cmd

第二步:在CMD中进入以下路径
(32位系统)  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

(64位系统)  C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727

若路径选择错误,可能会出现错误:0x80004005——试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

第三步:最后输入aspnet_regiis-i
回车后开始自动注册。

完成后重新浏览网站就OK了。

 

(8)网页左下角提示网页错误:

 

 

是因为将应用程序池下的Classic.NET AppPool 设置成集成模式了。

 

 

 

 

 

(9)Web警告日志,未解。

为应用程序池“Classic .NET AppPool”提供服务并且进程 ID 为“4820”的工作进程因不活动而被关闭。应用程序池超时配置被设置为 20 分钟。需要时将启动一个新工作进程。

因为应用程序池设置了闲置时间为20分钟,所以如果20分钟内没有请求该线程就会被释放,所以会触发这个事件。

这个是不影响你的程序运行的。

 

 

2.Web管理及登录错误类

(1) 检索COM类工厂中CLSID为{}的组件时失败。

错误界面:(注:该处涉及地址仅为演示地址。)

只是因为网站中还有组件未注册。

解决方法如下:

打开网站文件夹下的bin目录,如下图C:\PACSWeb\bin。

把其中的NFValidate.dll,TextEncode.dll,Dicomlib.dll,HDILib.dll,NFHQ.dll文件,复制到系统目录下。Window 2003的系统目录为C:\WINDOWS\system32。64位系统为:C:\WINDOWS\SysWOW64,下面注册路径也改变。

复制完成后,点屏幕左下方的开始菜单,然后点“运行”,输入cmd,回车。

在cmd内输入regsvr32 C:\WINDOWS\system32\NFHQ.dll并回车(注 regsvr32后要空格,后面的路径就是上面所说的系统目录)

几秒后,我们就看到注册NFHQ.dll成功的提示

 

 

(2) 未找到Oracle客户端和网络组件。

错误界面:(注:该处涉及地址仅为演示地址。)

 

该问题是Oracle数据库的一个BUG引起的,解决方法如下:

找到oracle安装的目录

本演示的目录为C:\Oracle

打开C盘,右键Oracle文件夹,点“共享和安全”。

将会出现oracle属性窗口,我们再点击“安全”选项卡。

此时界面如下

 

 

点击“添加”,输入“AuthenticatedUsers”点击“确定”

在上图的上部,将出现“AuthenticatedUsers”用户,选中他。

然后在上图的下部中,找到“读取和运行”,把前面的勾去掉,然后点“应用”。

接着再把“读取和运行”前面的勾选中,点“应用”,“确定”。(上部的Authenticated Users必须保持选中状态)

做完这些,然后重启系统,使刚才的更改生效

 

 

(3) ORA-01017用户名/口令无效;登录被拒绝。

错误界面:(注:该处涉及地址仅为演示地址。)

 

解决方法:

这是因为数据库的密码与网站web.config中设置的密码不同,导致网站链接不到数据库,只需改下网站根目录下Web.config就行。

打开Web.config,找到PACSConnectionStringInterface PACSConnectionString所在行(可点击“编辑”—“查找”),将后面的Password=“XX”改为设置的数据库密码。

 

(4) ORA-12154:无法解析指定的连接标识符。

错误界面:(注:该处涉及地址仅为演示地址。)

解决方法:

这是因为数据库的服务名与网站web.config中设置的密码不同,导致网站链接不到数据库,只需改下网站根目录下Web.config就行。

打开Web.config,找到PACSConnectionStringInterface PACSConnectionString所在行(可点击“编辑”—“查找”),将后面的DataSource=“XX”改为设置的数据库密码。

 

 

 

 

关于连接超时是因为连接数据库寻址失败,可按照上面方法设置。(注:该处涉及地址仅为演示地址。)

 

 

(5)  ORA-12514:无法识别连接描述符中请求的服务。

错误界面:

解决方法:

可能是因为以下原因,a.oracle服务未开启,b.数据库未开启,c.服务命名中服务名配置错误。

针对a可分别点击“开始”—“管理工具”—“服务”,然后找到“OracleServicePACS”这一项,启动其服务就行。(其中PACS是指实例名,根据实际情况而不同)

或者在cmd下可用net start oracleservicepacs 命令启动

 

针对b可以在cmd下用sqlplus / as sysdba登录,再通过命令 startup 启动数据库,如下:

针对c可以打开“开始”---“所有程序”---“Oracle- OraDb10g_home1”---“配置和移植工具”---“Net Manager ”,进入“Oracle Net Managet”。在服务命名下选择网站连接的数据库,更改服务名。

 

(6) ORA-12518:监听程序无法分发客户机连接。

错误界面:(注:该处涉及地址仅为演示地址。)

解决方法:

原因一,数据库的现有并发连接数超出原先设定的最大连接数;

原因二,可能是oracle服务未开启而导致的。

 

针对原因一,首先要确定所在网络连接数据库的连接数是否真的已经超出所设定的最大连接数,并且这种情况一般是出现在网络发展到一定程度时,并发连接数据库的用户较多。若确是因为此原因,则需改善相应系统配置,如增加内存,更新系统为64位系统等,然后修改最大连接数,修改方法如下(慎用)。

步骤一,在cmd下用sqlplus / as sysdba登录。

步骤二, 输入指令“showparameter processes;”并执行,查看目前最大连接数。

步骤三,输入指令“altersystem set processes=600 scope=spfile;”并执行,修改最大连接数为600。

步骤四,输入指令“createpfile from spfile;”并执行,创建Profile。

步骤五,重启Oracle服务或重启Oracle数据库服务器

步骤六,重复操作1、2、3、4步,确认最大连接数修改成功。

 

针对原因二,前提是原因一情况不出现,其解决方法主要是开启服务,可参照(5)中原因a。

 

(7)ORA-12528: 监听程序: 所有适用例程都无法建立新连接。

错误界面:(注:该处涉及地址仅为演示地址。)

ORA-12528问题是因为监听中的服务使用了动态服务,实例虽然启动,但没有注册到监听。实例是通过PMON进程注册到监听上的,而PMON进程需要在MOUNT状态下才会启动。所以造成了上面的错误。

 

解决这个问题,有三种方法:1、把监听设置为静态,2、在tnsnames.ora中追加(UR=A),3、重新启动服务.

 

一、通过修改listener.ora的参数,把动态的参数设置为静态的参数,然后从新启动监听

listener.ora NetworkConfiguration File:

$ORACLE_HOME\network\admin\listener.ora

# Generated by Oracleconfiguration tools.

 

LISTENER =

 (DESCRIPTION_LIST =

(DESCRIPTION

(ADDRESS = (PROTOCOL =IPC)(KEY = EXTPROC1521))

(ADDRESS = (PROTOCOL =TCP)(HOST = [IP])(PORT = 1521))

  )

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC=

(GLOBAL_DBNAME = [DBNAME])

(ORACLE_HOME = [$ORACLE_HOME])

  )

静态注册的风险:如果在instance运行中,lisener重新启动,就找不到instance了。静态注册需要先启动lisener,再启动instance。且静态模式下,lisener

status显示的是unknown

二、启动到nomount状态,通过修改tnsnames.ora的参数

然后连接上数据库

三、重启ORACLE或者重启ORACLE服务

 

(8)PACS_HIS类别对应打开错误。

 

这是由于WEB查询mypacs.pacs_his 表时出现查询错误,一般情况下是因为mypacs.pacs_his为空或有值关联不到comm.exam_class_dict中的exam_class_name。

可执行以下语句:select *from mypacs.pacs_his where his_exam_class not in (select exam_class_name fromcomm.exam_class_dict );   找出是哪一行在comm.exam_class_dict中没有。

 

然后删除mypacs.pacs_his中这一行或在comm.exam_class_dict建立相应类别的行则可。

 

 

 

 

 

 

 

 

(8)未在本地计算机上注册“OraOleDb.Oracle”提供程序。 win2008

 

“/”应用程序中的服务器错误。

--------------------------------------------------------------------------------

 

未在本地计算机上注册“OraOleDb.Oracle”提供程序。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

 

异常详细信息:System.InvalidOperationException: 未在本地计算机上注册“OraOleDb.Oracle”提供程序。

 

源错误:

 

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 

 

堆栈跟踪:

 

 

[InvalidOperationException: 未在本地计算机上注册“OraOleDb.Oracle”提供程序。]

  System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionStringconstr, DataSourceWrapper& datasrcWrapper) +962960

  System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionStringconstr, OleDbConnection connection) +124

  System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptionsoptions, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnectionowningObject) +86

  System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnectionowningConnection, DbConnectionPoolGroup poolGroup) +29

  System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnectionowningConnection) +4865788

  System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnectionouterConnection, DbConnectionFactory connectionFactory) +117

  System.Data.OleDb.OleDbConnection.Open() +40

  Pacs.DAL.DataAccess.get_GetConnection() +115

  Pacs.DAL.DataAccess.GetStringValue(String sql) +53

  Pacs.JWPACSLogin.DBLogin.UserLogin(String userID, String password,String application) +187

  Pacs.JWPACSLogin.DBLogin.Login(String userID, String password, Stringapplication) +103

  Pacs.JWPACSLogin.LoginOp.LoginSys(String userName, String password,String application) +51

  _Default.loginc_Click(Object sender, EventArgs e) +355

  System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111

  System.Web.UI.WebControls.Button.RaisePostBackEvent(StringeventArgument) +110

  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(StringeventArgument) +10

  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandlersourceControl, String eventArgument) +13

  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36

  System.Web.UI.Page.ProcessRequestMain(BooleanincludeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

 

 

一、现象:

  C#程序中需要以Provider=OraOLEDB.Oracle.1方式访问ORACLE数据库。但程序执行时报异常:未在本地计算机注册“OraOLEDB.Oracle.1”提供程序

二、解决方案:

  1、在Oracle安装目录找到Oracle的主程序目录,点击鼠标右键->属性->安全,对ASP.NET或者NETWORK SERVICE 帐户赋予允许读、执行权限,并在“高级”中保证该目录的子目录、文件都继承这些属性。

  2、服务器ORACLE为10g,虽然安装时选择了Oracle   Data   Provider   for   .net 和Oracle   Provider   for   OLE   DB。但是还是需要人工命令行注册一下
regsvr32 D:/oracle/10.2.0/db/BIN/OraOLEDB10.dll。

 OraOLEDB11.dll

 

他观点:

解决方法如下:到ORACLE_HOME目录,如c:/Oracle/Ora92 点击鼠标右键->属性->安全, 对ASP.NET帐户赋予允许读、执行权限,并在“高级”中保证该目录的子目录、文件都继承这些属性,确定。重新注册oraoledb.dll: regsvr32 $/oracle/ora92/bin/oraoledb.dll 2 这种情况有3种可能的原因 1.装Oracle 的机器是不是NTFS的?如果是的话,将/Ora81下的BIN的权限,全部放开,给所有用户。 (不然在B/S结构下会因为没有权限访问目录而报这个错误) 2.如果数据库服务器是Oracle816的。在服务器的那台机器上找Ora81/network/ADMIN下的sqlnet.ora文件,把里面的SQLNET.AUTHENTICATION_SERVICES= (NTS)改成SQLNET.AUTHENTICATION_SERVICES= (NONE) (这种会造成某些机器上报驱动初始化失败的错误,在用OracleClient下出现过一次) 3.如果以上都没有解决问题。可以考虑是不是注册表里 ...

 

--------------------------------------------------------------------------------

版本信息:Microsoft .NET Framework 版本:2.0.50727.4927; ASP.NET 版本:2.0.50727.4927

 

3.Web登记错误类

(1) 登录“预约申请”系统后出现日志访问阻止的错误。

错误界面:(注:该处涉及地址仅为演示地址。)

可从错误界面中看出——写入路径'D:\pacsweb\HISInterfaceError.log'和'D:\PACSWeb\InterfaceError.log'时被阻止。

我们可以授予该目录下可写权限,具体操作如下:

分别点击“我的电脑”——“D盘”——“pacsweb”,找到HISInterfaceError.log和InterfaceError.log这个文件。(下面以HISInterfaceError.log为例,其他方法一样)

 

右击该文件,选择“属性”出现属性界面。

选择Users用户,在下面的允许框勾上“写入”。“应用”—“确定”便可以。

(注意:在对安全要求比较高的情况下,可选择直接删掉HISInterfaceError.log文件。)

 

 

(2) 部署时发生Methodnot found。

错误界面:(注:该处涉及地址仅为演示地址。)

如果文件未丢失,而且没有破坏原有文件的相对路径。

那么引起该Bug的原因,可能就是软件版本的问题。

通过搜索,找到AssemblyInfo.cs文件,把版本号更改,应该就可以了。

 

(3) Web登记中点击“补登录”时出错。

错误界面:(注:该处涉及地址仅为演示地址。)

解决方法:

这是因为参数对应不全引起的错误,可用管理用户登录web管理程序,选择“PACS_HIS类别对应”,输入相应内容。其中PACS代码统一定义,HIS代码输入“科室类别对应”中的“代码”

 

 

(4)解决web程序获取不到his接口数据

His数据库是SQL server2005 已加入域HISSOFT.com

刚开始以为是新安装系统环境太过纯净,于是安装了64位的SQL server 2005 客户端,登陆时出现了以下错误。

 

后来才知道系统已经有了odbc了,可以不需安装客户端使用odbc测试,打开C:\Windows\SysWOW64下的odbcad32.exe

 

 

点击添加,在弹出的选择窗口中将滚动条拉到最后并选择“SQL server”,点击“完成”。

 

填写名称及服务器名,继续下一步。

 

 

选使用SQL server 验证,并填写登入ID和密码。继续下一步。

 

 

出现连接失败的的故障,错误代码是53和17.

 

在cmd下试着ping 服务器名和服务器IP,ping不通服务器名说明找不到服务器,ping得通IP说明客户机与服务器之间是连通的。

 

 

后来想想这边的数据库服务器已加入域,在加入域的客户机是可以ping通服务器名的,在其他没加入的客户机都不可以,是不是因为客户机没有加入域导致不连通的。于是加了域。

 

 

再使用odbc32.exe 进行连接,还是连不上,但这次的错误代码为1326 和 12

 

 

再在CMD下ping ,此时服务器名和IP都能ping得通了,这说明连接时没问题了,但在某个地方是被阻止了。

试着将防火墙关闭。

 

 

关闭防火墙之后就连通了。

 

 

问题是出现在防火墙中,应该是防火墙将这个程序阻止了。

 

W3wp.exe

 

w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行。这个进程用来分配大量的系统资源

 

 

你可能感兴趣的:(关于web服务器维护)