今天使用内网部署web服务,用手机进行访问(手机访问内网服务器网页见上一篇博客),
基本步骤如下:
1.visual studio 生成web服务,并部署到某一文件夹ws中
2.服务器IIS在“网站”中右击添加一新网站ws,将目录定位1中的目录ws(添加网站过程中要求设置如下图所示网站名,路径,绑定ip等内容。ip一旦绑定,访问时将按照ip来访问))
这时访问该服务,会出现“”HTTP Error 503. The service is unavailable”的出错页面
3.继续做以下设置:在自动生成的“ws”(由2中网站而自动生成)的应用程序池中,找到ws应用程序池,右键菜单并选择“属性”,选择4.0的框架(在visual studio 使用2010的4.0的框架生成的),托管管道模式选择“经典”,并勾选“立即启动应用程序池”(要保证应用程序池要处于运行,未运行将看不到效果)
4.之后访问服务会出现
这时点击网站zs,并在“IIS”中的“目录浏览”
在"操作"下,点启用,此按钮将变成禁用,则可消除此错误
5.配置右侧服务器,在“功能”视图中,双击“ISAPI 和 CGI 限制” 以确认 Web 服务扩展被设置为“允许”。
Tisp:
a、如果该扩展不在列表中,请在“操作”窗格中单击“添加”。
b、在“添加 ISAPI 和 CGI 限制”对话框中,在“ISAPI”或“CGI 路径”框中键入 .dll 或 .exe 文件的路径,或者单击“浏览”导航到相应文件的位置。
c、在“描述”框中,键入该限制的简要说明。
d 、(可选)选中“允许执行扩展路径”以使限制可以自动运行。
e、如果不选中此选项,则限制状态将为“不允许”,这是默认状态。您可以在以后选中此选项并单击“操作”窗格中的“允许”来允许该限制。 单击“确定”。
6.如果不能浏览web 服务,右击该网站右键程序池–高级设置,往下拖,在进程模型中有标识一项,点击后面的省略号,在弹出窗口的“内置帐户”下拉,选择“NetworkService”,确定。
好了,经过几个步骤,电脑和手机都可以访问了
下面,附上一篇相关文章:
IIs_WPG用户组的介绍
为了管理的方便,在安装 IIS 6 时创建了 IIS_WPG 组(也称为 IIS 工作进程组,IIS WorkerProcess Group),而且它的成员包括 Local System(本地系统)、Local Service(本地服务)、Network Service(网络服务)和 IWAM 帐户。IIS_WPG 的成员具有适当的 NTFS 权限和必要的用户权限,可以充当 IIS 6 中工作进程的进程标识。以下位置具有指派给 IIS_WPG 的权限:
? %windir%\help\iishelp\common – 读取
? %windir%\IIS Temporary Compressed Files – 列出、读取、写入
? %windir%\system32\inetsrv\ASP Compiled Template – 读取
? Inetpub\wwwroot(或内容目录)- 读取、执行
另外,IIS_WPG 还具有以下用户权限:
? 忽略遍历检查(SeChangeNotifyPrivilege)
? 作为批处理作业登录(SeBatchLogonRight)
? 从网络访问此计算机(SeNetworkLogonRight)因此,Network Service 帐户提供了访问上述位置的权限,具有充当 IIS 6 工作进程的进程标识的充足权限,以及具有访问网络的权限。
所有的IIS6进程都是运行在IIS_WPG 账号下的
另外,在查找资料的过程中,找到了我希望印证许久,而始终未印证的话,帮助我们清楚HTTP协议的底层实现,在下面以蓝色HTTP循环地体予以描述
503错误
503是一种 HTTP状态码。英文名503 Service Unavailable与 404(404 Service Unavailable)是同属一种网页状态出错码。前者是 服务器出错的一种返回状态,后者是网页程序没有相关的搜索结果后返回的一种状态,需要优化网站的时候通常需要制作 404出错页以便网站整体优化。
定义
由于临时的 服务器维护或者过载,服务器当前无法处理请求。这个状况
503
是临时的,并且将在一段时间以后恢复。如果能够预计延迟时间,那么响应中可以包含一个
Retry-After起头用以标明这个延迟时间。如果没有给出这个
Retry-After信息,那么 客户端应当以处理
500(Server Internal Error)响应的方式处理它。注意:
503状态码的存在并不意味着必须在 服务器过载的时候使用它。某些 服务器只不过是希望拒绝某些 客户端的连接。
分析
出现
503错误,其
日志都是记录在
%Systemroot%\System32\LogFiles\HTTPERR\httperr1.log中。
其中的
s-reason项:
1、若为
AppShutdown,可能是由于
CPU占用率太高导致自动关闭 应用程序池。
2、若为
AppOffline,可能是由于 应用程序标识出错引起的。
3、若为
Disabled,可能是由管理员手工关闭 应用程序池引起的。
4、若为
QueueFull,可能是因为请求时 应用程序池队列已满而生成该错误。
2HTTP循环
任何客户端在和您的网络服务器通讯时,都需经过以下循环:
从您站点的 IP 名称 ( 即您的网页地址 - URL, 不带起始的 ‘http://') 获得一个 IP 地址。这个对应关系 ( 即由 IP 名称向 IP地址转换的对应关系 ) 由域名服务器(DNSs) 提供。 打开一个 IP socket (套接字) 连接到该 IP 地址。 通过该 socket 写 HTTP 数据流。 从您的网络服务器接受响应的 HTTP 数据流。该数据流包括状态编码, 其值取决于 HTTP 协议 。 解析 该数据流得到 状态编码 和其他有用信息。 该错误在以上所述的最后一步生成,即当客户端收到 HTTP 状态编码 并识别其为 ‘503’ 时。
3出现原因
网页出现
1、 网络管理员可能关闭 应用程序池以执行维护。
503错误
2、当请求到达时 应用程序池队列已满。
3、 应用程序池标识没有使用预定义账户:网络服务,而自己 配置了标识,但是配置的这个用户不属于
IIS_WPG组
4、 应用程序池启用了
CPU监视,并且设置了
CPU利用率超过一定百分比关闭应用程序池,而开发人员写的 服务端页面(
.
asp
,. aspx)执行效率不高,会引起
CPU的长时间占用,最终达到设置的百分比,从而引起应用程序池关闭
5、 应用程序池的性能选项卡的 请求队列限制所填的数值太小,默认为
1000。
6、 web.config的
system.web/httpRuntime节点的
appRequestQueueLimit属性设置的值太低。
主机站点
主要原因有两点:
1、该站点正在被攻击。对于最新型的攻击,其实是
ddos的一种派生,原理在于找数千个IP,同时向 服务器的
apache发出请求,然后 立即断开,让
apache处于等待状态,致使
apache线程全部被填满,致使服务器死机。因此,为了保证大多数客户的利益,我们给每个 空间,作出了每
19秒
64个
php请求的限制。注意,是
php请求,一般的图片请求和
html请求不包括在内。
503错误
2、该程序占用的 php线程过多,有的程序没有进行好优化处理,一个点击即可产生数个,甚至数十个
php线程。这样的话,几个点击就可以把该时段的
64个 php线程全部填满了。因此出现
503错误。建议优化一下程序,尽量少用
require(“请求”之意)等语句。
解决方案:
要解决此问题,按照下列步骤操作:
1. 验证是否已为 虚拟服务器 配置了 应用程序池。默认的 应用程序池是MSSharePointPortalAppPool。
请按照下列步骤来确定 虚拟服务器正在使用的 应用程序池。
a.单击“开始”,指向“管理工具”,然后单击“ Internet信息服务(IIS)管理器”。
b.展开“ServerName”,展开“Web站点”,右键单击 虚拟服务器,然后单击“属性”。
c.单击“主目录”选项卡。为虚拟服务器 配置的 应用程序池列在“应用程序池”框中。
d.单击“确定”。
2、 验证 应用程序池 帐户使用的密码是否正确。IIS不会自动轮询ActiveDirectory目录服务中的密码更改。如果 应用程序池 帐户是一个域帐户,其密码已过期,则在为此帐户重新指定一个新密码后,您可能会收到本文“症状”部分所描述的 错误信息。
3、 验证 应用程序池 帐户是 服务器上的IIS_WPG组和STS_WPG组的成员。
4、重新启动 IIS以回收 应用程序池。
4解决方法
您的 Web 服务器实际上处于“关闭维修”状态。 它仍然在最低限度地运行, 因为它至少可以响应 503 状态码, 但全面服务是不可能的, 即您的网站不可用。 可能的原因有很多, 但一般来说, 是由于您的 Web 服务器操作员的人为干预。 通常您就应知道有人正在努力解决此问题,正常服务将被尽快恢复。
请和您网站的系统操作员联系,以确定为什么服务停止了。 和我们比起来,他们将能更好地帮您解决这类错误。