ASP.net获取当前url各种属性(文件名、参数、域名 等)的方法

假设当前页完整地址是:http://www.test.com/aaa/bbb.aspx?id=5&name=kelli

“http://”是协议名

“www.test.com”是域名

“aaa”是站点名

“bbb.aspx”是页面名(文件名)

“id=5&name=kelli”是参数

【1】获取 完整url (协议名+域名+站点名+文件名+参数)

string url=Request.Url.ToString();

url= http://www.test.com/aaa/bbb.aspx?id=5&name=kelli

【2】获取 站点名+页面名+参数:
string url=Request.RawUrl;

(或 string url=Request.Url.PathAndQuery;)

url= /aaa/bbb.aspx?id=5&name=kelli

【3】获取 站点名+页面名

string url=HttpContext.Current.Request.Url.AbsolutePath;

(或 string url= HttpContext.Current.Request.Path;)

url= aaa/bbb.aspx

【4】获取 域名

string url=HttpContext.Current.Request.Url.Host;

url= www.test.com

【5】获取 参数

string url= HttpContext.Current.Request.Url.Query;

url= ?id=5&name=kelli

js验证表单大全,用JS控制表单提交,javascript提交表单

目录:
1:js 字符串长度限制、判断字符长度 、js限制输入、限制不能输入、textarea 长度限制
2.:js判断汉字、判断是否汉字 、只能输入汉字
3:js判断是否输入英文、只能输入英文
4:js只能输入数字,判断数字、验证数字、检测数字、判断是否为数字、只能输入数字
5:只能输入英文字符和数字
6: js email验证 、js 判断email 、信箱/邮箱格式验证
7:js字符过滤,屏蔽关键字
8:js密码验证、判断密码
2.1: js 不为空、为空或不是对象 、判断为空 、判断不为空
2.2:比较两个表单项的值是否相同
2.3:表单只能为数字和”_”,
2.4:表单项输入数值/长度限定
2.5:中文/英文/数字/邮件地址合法性判断
2.6:限定表单项不能输入的字符
2.7表单的自符控制
2.8:form文本域的通用校验函数

1. 长度限制
<script>
function test()
{
if(document.a.b.value.length>50)
{
alert(“不能超过50个字符!”);
document.a.b.focus();
return false;
}
}
</script>
<form name=a onsubmit=”return test()”>
<textarea name=”b” cols=”40″ wrap=”VIRTUAL” rows=”6″></textarea>
<input type=”submit” name=”Submit” value=”check”>
</form>

2. 只能是汉字
<input onkeyup=”value=”/oblog/value.replace(/[^u4E00-u9FA5]/g,”)”>

3.” 只能是英文
<script language=javascript>
function onlyEng()
{
if(!(event.keyCode>=65&&event.keyCode<=90))
event.returnvalue=false;
}
</script>

<input onkeydown=”onlyEng();”>

4. 只能是数字
<script language=javascript>
function onlyNum()
{
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
//考虑小键盘上的数字键
event.returnvalue=false;
}
</script>

<input onkeydown=”onlyNum();”>

5. 只能是英文字符和数字
<input onkeyup=”value=”/oblog/value.replace(/[W]/g,””) “onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^d]/g,”))”>

6. 验证油箱格式
<SCRIPT LANGUAGE=javascript RUNAT=Server>
function isEmail(strEmail) {
if (strEmail.search(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/) != -1)
return true;
else
alert(“oh”);
}
</SCRIPT>
<input type=text onblur=isEmail(this.value)>

7. 屏蔽关键字(这里屏蔽***和****)
<script language=”javascript1.2″>
function test() {
if((a.b.value.indexOf (“***”) == 0)||(a.b.value.indexOf (“****”) == 0)){
alert(“:)”);
a.b.focus();
return false;}
}
</script>
<form name=a onsubmit=”return test()”>
<input type=text name=b>
<input type=”submit” name=”Submit” value=”check”>
</form>

8. 两次输入密码是否相同
<FORM METHOD=POST ACTION=”">
<input type=”password” id=”input1″>
<input type=”password” id=”input2″>
<input type=”button” value=”test” onclick=”check()”>
</FORM>
<script>
function check()
{
with(document.all){
if(input1.value!=input2.value)
{
alert(“false”)
input1.value = “”;
input2.value = “”;
}
else document.forms[0].submit();
}
}
</script>
够了吧 :)
屏蔽右键 很酷
oncontextmenu=”return false” ondragstart=”return false” onselectstart=”return false”
加在body中

2.1 表单项不能为空

<script language=”javascript”>
<!–
function CheckForm()
{
if (document.form.name.value.length == 0) {
alert(“请输入您姓名!”);
document.form.name.focus();
return false;
}
return true;
}
–>
</script>

2.2 比较两个表单项的值是否相同

<script language=”javascript”>
<!–
function CheckForm()
if (document.form.PWD.value != document.form.PWD_Again.value) {
alert(“您两次输入的密码不一样!请重新输入.”);
document.ADDUser.PWD.focus();
return false;
}
return true;
}
–>
</script>

2.5 中文/英文/数字/邮件地址合法性判断

<SCRIPT LANGUAGE=”javascript”>
<!–

function isEnglish(name) //英文值检测
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charCodeAt(i) > 128)
return false;
}
return true;
}

function isChinese(name) //中文值检测
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charCodeAt(i) > 128)
return true;
}
return false;
}

function isMail(name) // E-mail值检测
{
if(! isEnglish(name))
return false;
i = name.indexOf(” at “);
j = name dot lastIndexOf(” at “);
if(i == -1)
return false;
if(i != j)
return false;
if(i == name dot length)
return false;
return true;
}

function isNumber(name) //数值检测
{
if(name.length == 0)
return false;
for(i = 0; i < name.length; i++) {
if(name.charAt(i) < “0″ || name.charAt(i) > “9″)
return false;
}
return true;
}

function CheckForm()
{
if(! isMail(form.Email.value)) {
alert(“您的电子邮件不合法!”);
form.Email.focus();
return false;
}
if(! isEnglish(form.name.value)) {
alert(“英文名不合法!”);
form.name.focus();
return false;
}
if(! isChinese(form.cnname.value)) {
alert(“中文名不合法!”);
form.cnname.focus();
return false;
}
if(! isNumber(form.PublicZipCode.value)) {
alert(“邮政编码不合法!”);
form.PublicZipCode.focus();
return false;
}
return true;
}
//–>
</SCRIPT>

2.6 限定表单项不能输入的字符

<script language=”javascript”>
<!–

function contain(str,charset)// 字符串包含测试函数
{
var i;
for(i=0;i<charset.length;i++)
if(str.indexOf(charset.charAt(i))>=0)
return true;
return false;
}

function CheckForm()
{
if ((contain(document.form.NAME.value, “%()><”)) || (contain(document.form.MESSAGE.value, “%()><”)))
{
alert(“输入了非法字符”);
document.form.NAME.focus();
return false;
}
return true;
}
//–>
</script>

1. 检查一段字符串是否全由数字组成
—————————————
<script language=”Javascript”><!–
function checkNum(str){return str.match(/D/)==null}
alert(checkNum(“1232142141″))
alert(checkNum(“123214214a1″))
// –></script>

2. 怎么判断是否是字符
—————————————
if (/[^x00-xff]/g.test(s)) alert(“含有汉字”);
else alert(“全是字符”);

3. 怎么判断是否含有汉字
—————————————
if (escape(str).indexOf(“%u”)!=-1) alert(“含有汉字”);
else alert(“全是字符”);

4. 邮箱格式验证
—————————————
//函数名:chkemail
//功能介绍:检查是否为Email Address
//参数说明:要检查的字符串
//返回值:0:不是 1:是
function chkemail(a)
{ var i=a.length;
var temp = a.indexOf(‘@’);
var tempd = a.indexOf(‘.’);
if (temp > 1) {
if ((i-temp) > 3){
if ((i-tempd)>0){
return 1;
}

}
}
return 0;
}

5. 数字格式验证
—————————————
//函数名:fucCheckNUM
//功能介绍:检查是否为数字
//参数说明:要检查的数字
//返回值:1为是数字,0为不是数字
function fucCheckNUM(NUM)
{
var i,j,strTemp;
strTemp=”0123456789″;
if ( NUM.length== 0)
return 0
for (i=0;i<NUM.length;i++)
{
j=strTemp.indexOf(NUM.charAt(i));
if (j==-1)
{
//说明有字符不是数字
return 0;
}
}
//说明是数字
return 1;
}

6. 电话号码格式验证
—————————————
//函数名:fucCheckTEL
//功能介绍:检查是否为电话号码
//参数说明:要检查的字符串
//返回值:1为是合法,0为不合法
function fucCheckTEL(TEL)
{
var i,j,strTemp;
strTemp=”0123456789-()# “;
for (i=0;i<TEL.length;i++)
{
j=strTemp.indexOf(TEL.charAt(i));
if (j==-1)
{
//说明有字符不合法
return 0;
}
}
//说明合法
return 1;
}

7. 判断输入是否为中文的函数
—————————————
function ischinese(s){
var ret=true;
for(var i=0;i<s.length;i++)
ret=ret && (s.charCodeAt(i)>=10000);
return ret;
}

8. 综合的判断用户输入的合法性的函数
—————————————
<script language=”javascript”>
//限制输入字符的位数开始
//m是用户输入,n是要限制的位数
function issmall(m,n)
{
if ((m<n) && (m>0))
{
return(false);
}
else
{return(true);}
}

9. 判断密码是否输入一致
—————————————
function issame(str1,str2)
{
if (str1==str2)
{return(true);}
else
{return(false);}
}

10. 判断用户名是否为数字字母下滑线
—————————————
function notchinese(str){
var reg=/[^A-Za-z0-9_]/g
if (reg.test(str)){
return (false);
}else{
return(true); }
}

2.8. form文本域的通用校验函数
—————————————
作用:检测所有必须非空的input文本,比如姓名,账号,邮件地址等等。
该校验现在只针对文本域,如果要针对form里面的其他域对象,可以改变判断条件。

使用方法:在要检测的文本域中加入title文字。文字是在提示信息,你要提示给用户的该字段的中文名。比如要检测用户名
html如下<input name=”txt_1″ title=”姓名”>,当然,最好用可视化工具比如dreamweaver什么的来编辑域。
如果要检测数字类型数据的话,再把域的id统一为sz.
javascript判断日期类型比较麻烦,所以就没有做日期类型校验的程序了.高手可以补充。

程序比较草,只是提供一个思路。抛砖引玉! :)
哦,对了,函数调用方法:< form onsubmit=”return dovalidate()”>

function dovalidate()
{
fm=document.forms[0] //只检测一个form,如果是多个可以改变判断条件
for(i=0;i<fm.length;i++)
{
//检测判断条件,根据类型不同可以修改
if(fm[i].tagName.toUpperCase()==”INPUT” &&fm[i].type.toUpperCase()==”TEXT” && (fm[i].title!=”"))

if(fm[i].value=”/blog/=”")//
{
str_warn1=fm[i].title+”不能为空!”;
alert(str_warn1);
fm[i].focus();
return false;
}
if(fm[i].id.toUpperCase()==”SZ”)//数字校验
{
if(isNaN(fm[i].value))
{ str_warn2=fm[i].title+”格式不对”;
alert(str_warn2);
fm[i].focus();
return false;
}
}
}
return true;
}

NBA,一些让人怀念的巨星们

特雷西·麦克格雷迪

曾经NBA最顶尖的球员之一。无论是从身体上还是头脑上,天才型球员,这个词组是用来评价McGrady最适合的词语。

阿伦·艾弗森

四次得分王的艾弗森,以一己之力带76人进入2000-2001赛季总决赛,总决赛中遇到当时的霸王组合“ok”组合,最终惜败!这也是艾弗森距离总冠军最近的一次!当时76人还有穆大叔。

史蒂夫·弗朗西斯

绰号”特权”一词由来:他的英文名字Francis和franchise(中文意思:特权)很接近,加上他新秀时不愿去选他的灰熊(离家乡太远),灰熊只好把他交易到火箭,弗朗西斯成为火箭头号球员。由于新秀迫使球队交易自己的先例是没有的,弗老大也就顺里成章拥有外号“特权”,这十分符合他独特的性格和球风。再者当年在火箭他拥有无限开火权,这也是主帅汤姆蒂诺维奇赐予他的特权。

沙奎尔-奥尼尔

可以毫不夸张的说,“侠客”奥尼尔是NBA历史上最伟大的中锋之一,他所获得的成就让许多人都渴望而不可及,4次总冠军,3次总决赛MVP,1次常规赛MVP,NBA50大球员……这一切都是他伟大的标志。而取得成功的奥尼尔并不像别的一些名人一样拿自己的成绩炫耀并因此而看不起别人,恰恰相反的是,性格有些像“大小孩”的奥尼尔十分的谦虚,而且他还会主动地帮助那些需要他去帮助的人们,他会经常参加一些公益活动,有时还会去医院,孤儿院看望病人们和孩子们,复活节和圣诞节的时候,他会买玩具送给那些贫困的孩子,他还会为了让球迷们买到便宜的球鞋而开办了自己的球鞋公司,然后把自己公司生产的球鞋以低廉的价格卖给球迷们……有付出就会有回报,奥尼尔慷慨的表现为他赢得了球迷的心,在全世界的范围内,不知有多少人把他试为心中的偶像,又不知有多少人把他当作学习的榜样。可以这么说,侠客在世界上的影响力是十分巨大的,在某些方面,也许与飞人阁下的影响力是相当的。

robots.txt用法

=========robots.txt用法
禁止搜索引擎收录的方法
一.什么是robots.txt文件?
  搜索引擎通过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信息。
  您可以在您的网站中创建一个纯文本文件robots.txt,在这个文件中声明该网站中不想被robot访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。
二. robots.txt文件放在哪里?
  robots.txt文件应该放在网站根目录下。举例来说,当robots访问一个网站(比如http://www.abc.com)时,首先会检查该网站中是否存在http://www.abc.com/robots.txt这个文件,如果机器人找到这个文件,它就会根据这个文件的内容,来确定它访问权限的范围。
网站 URL 相应的 robots.txt的 URL
http://www.w3.org/ http://www.w3.org/robots.txt
http://www.w3.org:80/ http://www.w3.org:80/robots.txt
http://www.w3.org:1234/ http://www.w3.org:1234/robots.txt
http://w3.org/ http://w3.org/robots.txt
三. robots.txt文件的格式
“robots.txt”文件包含一条或更多的记录,这些记录通过空行分开(以CR,CR/NL, or NL作为结束符),每一条记录的格式如下所示:
    ”:”。
  在该文件中可以使用#进行注解,具体使用方法和UNIX中的惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow行,详细情况如下:
User-agent:
  该项的值用于描述搜索引擎robot的名字,在”robots.txt”文件中,如果有多条User-agent记录说明有多个robot会受到该协议的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则该协议对任何机器人均有效,在”robots.txt”文件中,”User-agent:*”这样的记录只能有一条。
Disallow :
  该项的值用于描述不希望被访问到的一个URL,这个URL可以是一条完整的路径,也可以是部分的,任何以Disallow 开头的URL均不会被robot访问到。例如”Disallow: /help”对/help.html 和/help/index.html都不允许搜索引擎访问,而”Disallow: /help/”则允许robot访问/help.html,而不能访问/help/index.html。
任何一条Disallow记录为空,说明该网站的所有部分都允许被访问,在”/robots.txt”文件中,至少要有一条Disallow记录。如果”/robots.txt”是一个空文件,则对于所有的搜索引擎robot,该网站都是开放的。
四. robots.txt文件用法举例
例1. 禁止所有搜索引擎访问网站的任何部分
   下载该robots.txt文件 User-agent: *
Disallow: /
例2. 允许所有的robot访问
(或者也可以建一个空文件 “/robots.txt” file)
User-agent: *
Disallow:
例3. 禁止某个搜索引擎的访问
User-agent: BadBot
Disallow: /
例4. 允许某个搜索引擎的访问 User-agent: baiduspider
Disallow:
User-agent: *
Disallow: /
例5. 一个简单例子
  在这个例子中,该网站有三个目录对搜索引擎的访问做了限制,即搜索引擎不会访问这三个目录。
  需要注意的是对每一个目录必须分开声明,而不要写成 “Disallow: /cgi-bin/ /tmp/”。
  User-agent:后的* 具有特殊的含义,代表”any robot”,所以在该文件中不能有”Disallow: /tmp/*” or “Disallow: *.gif”这样的记录出现.
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/
五. robots.txt文件参考资料
robots.txt文件的更具体设置,请参看以下资料:
· Web Server Administrator’s Guide to the Robots Exclusion Protocol
· HTML Author’s Guide to the Robots Exclusion Protocol
· The original 1994 protocol description, as currently deployed
· The revised Internet-Draft specification, which is not yet completed or implemented
说明
本站采取了一些简单的防盗设置,如果您对本站的文章感兴趣,请联系:youwen@gmail.com
评论
在你的主页中为Web Robot设计路标
Internet越来越酷,WWW的知名度如日中天。在Internet上发布公司信息、进行电子商务已经从时髦演化成时尚。作为一个Web Master,你可能对HTML、Javascript、Java、 ActiveX了如指掌,但你是否知道什么是Web Robot?你是否知道Web Robot和你所设 计的主页有什么关系?
  Internet上的流浪汉— Web Robot
  有时你会莫名其妙地发现你的主页的内容在一个搜索引擎中被索引,即使你从未与他 们有过任何联系。其实这正是Web Robot的功劳。Web Robot其实是一些程序,它可以 穿越大量Internet网址的超文本结构,递归地检索网络站点所有的内容。这些程序有时被叫 “蜘蛛(Spider)” , “网上流浪汉(Web Wanderer)”,“网络蠕虫(web worms)”或Web crawler。一些Internet网上知名的搜索引擎站点(Search Engines)都 有专门的Web Robot程序来完成信息的采集,例如Lycos,Webcrawler,Altavista等,以及中文搜索引擎站点例如北极星,网易,GOYOYO等。
  Web Robot就象一个不速之客,不管你是否在意,它都会忠于自己主人的职责,任劳任怨、不知疲倦地奔波于万维网的空间,当然也会光临你的主页,检索主页内容并生成它所需要的记录格式。或许有的主页内容你乐于世人皆知,但有的内容你却不愿被 洞察、索引。难道你就只能任其“横行”于自己主页空间,能否指挥和控制Web Robot的行踪呢?答案当然是肯定的。只要你阅读了本篇的下文,就可以象一个交通 警察一样,布置下一个个路标,告诉Web Robot应该怎么去检索你的主页,哪些可以检索,哪些不可以访问。
  其实Web Robot能听懂你的话
  不要以为Web Robot是毫无组织,毫无管束地乱跑。很多Web Robot软件给网络站点的 管理员或网页内容制作者提供了两种方法来限制Web Robot的行踪:
  1、Robots Exclusion Protocol 协议
  网络站点的管理员可以在站点上建立一个专门格式的文件,来指出站点上的哪一部分 可以被robot访问, 这个文件放在站点的根目录下,即robots.txt.” target=”_blank”>http://…/robots.txt.
  2、Robots META tag
  一个网页作者可以使用专门的HTML META tag ,来指出某一个网页是否可以被索 引、分析或链接。
  这些方法适合于大多数的Web Robot,至于是否在软件中实施了这些方法,还依赖于 Robot的开发者,并非可以保证对任何Robot都灵验。如果你迫切需要保护自己内容,则应考虑采用诸如增加密码等其他保护方法。
  使用Robots Exclusion Protocol协议
  当Robot访问一个 Web 站点时,比如http://www.sti.net.cn/,它先去检查文件robots.txt” target=”_blank”>http://www.sti.net.cn/robots.txt。如果这个文件存在,它便会按照这样的记录格式去分析:
  User-agent: *
  Disallow: /cgi-bin/
  Disallow: /tmp/
  Disallow: /~joe/
  以确定它是否应该检索站点的文件。这些记录是专门给Web Robot看的,一般的浏览 者大概永远不会看到这个文件,所以千万不要异想天开地在里面加入形似 类的HTML语句或是“How do you do? where are you from?”之类假情假意的问候语。
  在一个站点上只能有一个 “/robots.txt” 文件,而且文件名的每个字母要求全部是小 写。在Robot的记录格式中每一个单独的”Disallow”行表示你不希望Robot访问的URL, 每个URL必须单独占一行,不能出现 “Disallow: /cgi-bin/ /tmp/”这样的病句。同时在一个记录中不能出现空行,这是因为空行是多个记录分割的标志。
  User-agent行指出的是Robot或其他代理的名称。在User-agent行,’*’ 表示一个特殊的含义—所有的robot。
  下面是几个robot.txt的例子:
  在整个服务器上拒绝所有的robots:
  User-agent: *
  Disallow: /
  允许所有的robots访问整个站点:
  User-agent: *
  Disallow:
  或者产生一个空的 “/robots.txt” 文件。
  服务器的部分内容允许所有的robot访问
  User-agent: *
  Disallow: /cgi-bin/
  Disallow: /tmp/
  Disallow: /private/
  拒绝某一个专门的robot:
  User-agent: BadBot
  Disallow: /
  只允许某一个robot光顾:
  User-agent: WebCrawler
  Disallow:
  User-agent: *
  Disallow: /
  
  最后我们给出 http://www.w3.org/站点上的robots.txt:
  # For use by search.w3.org
  User-agent: W3Crobot/1
  Disallow:
  User-agent: *
  Disallow: /Member/ # This is restricted to W3C Members only
  Disallow: /member/ # This is restricted to W3C Members only
  Disallow: /team/ # This is restricted to W3C Team only
  Disallow: /TandS/Member # This is restricted to W3C Members only
  Disallow: /TandS/Team # This is restricted to W3C Team only
  Disallow: /Project
  Disallow: /Systems
  Disallow: /Web
  Disallow: /Team
  
  使用Robots META tag方式
  Robots META tag 允许HTML网页作者指出某一页是否可以被索引,或是否可以用来查找更多的链接文件。目前只有部分robot实施了这一功能。
  Robots META tag的格式为:
  
  象其他的META tag一样,它应该放在HTML文件的HEAD区:
  
  …
  Robots META tag指令使用逗号隔开,可以使用的指令包括 [NO]INDEX 和[NO]FOLLOW。INDEX 指令指出一个索引性robot是否可以对本页进行索引;FOLLOW 指 令指出robot是否可以跟踪本页的链接。缺省的情况是INDEX和FOLLOW。例如:
 
  一个好的Web 站点管理员应该将robot的管理考虑在内,使robot为自己的主页服务, 同时又不损害自己网页的安全。

w3wp.exe占用cpu、内存过高

刚才说到w3wp.exe占用内存和cpu过高的问题,今天我们来解决这个问题

在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。

由于内存释放不及时严重影响到服务器的正常运营,建议采用以下配置,但请考虑自身服务器的使用情况。

可以做以下配置:

1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。(进程池越多越占用内存,由于访问网站之后往往不会立即释放内存资源。)

2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存 。

3、设置固定时间加收进程,比如在凌晨1:00至9:00之前访问人数都比较少,影响很少小,可以设定每天在这个时间段内进行内存回收,以减少服务器因为内存不足带来的影响。设定固定的时间在IIS6中没有限制次数,可以根据实际情况来设定时间比如:晚上12:00,8:00,12:30,6:30等时间段时间有效的进程池资源回收。

一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。

那么,怎么样才能找到是哪一个网站的?
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid

2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池

3、到iis中察看该应用程序池对应的网站,就ok了。

Windows Server 2003中的w3wp.exe进程大量占用cpu资源的各种问题解决方法2007-04-

24 14:43这几天服务器总是运行缓慢,远程登录后发现一个w3wp.exe的进程占用了100%

cpu

在Windows Server 2003中对于每一个Web应用,IIS 6.0都用一个独立的w3wp.exe

的实例来运行它。w3wp.exe也称为工作进程(每一个主机头都会有一个)

直接在任务管理器中结束进程是不起作用的,结束后不久它会执行启动,要想结束它可

以在IIS中找到相应的应用程序池停止相应的应用程序池工作。

这些都不是解决办法,它的根本问题是你的那个网站程序有问题,在找到问题以前可以

先打开IIS找到应用程序池先用右键属性中设置“性能”把其中的CPU设成大于60%关闭应

用程序池,把关闭时间和开启时间设短一些比如10秒,这样当您的网站程序大量占用系

统资源时IIS自动快速回收进程并且快速启动进程,您的网站暂时还可以将就着工作。

要解决根本问题还要从程序查起,您可以在IIS中的应用程序池中右键创建多个应用程序

池,然后在每个主机头中的文件家选项的底部将应用程序池对应道刚才建好的应用程序

池,然后一个一个关闭在任务管理器中看看是哪个程序占用的资源较大。

下面是一些网友的相关贴子也许对大家有帮助

朋友的WEB服务器一直运行正常,但这几天CPU占用率一直将近100%,遂去看个究竟。
服务器采用Windows 2003, 网站使用ASP+Access数据库, 查看进程列表发现

w3wp.exe 占用了70%以上的CPU,
查看WEB日志,站点访问量不大,查看TCP连接也不多。用net stop w3svc停掉WEB服

务,CPU占用立即正常,net start w3svc启动WEB后不久现象又出来了。停止所有虚

拟站点,新建一个虚拟站点发现并没有问题,怀疑是站点本身的代码问题。
检查首页代码,大致是如下结构:

粗看一下并没有问题,但就是这段代码造成了w3wp.exe占用大量CPU,难道是死循环?似

乎没有理由。在循环体内加入计数,发现确实是死循环,说明RS.EOF一直为false,加入

如下代码:

if RS.EOF = true then Response.Write “EOF is true”
if RS.EOF = false then Response.Write “EOF is false”

发现输出竟然是EOF is true EOF is false, 说明无法判断RS.EOF的值,

为何如此百思不得其解。检查数据库,发现库中并没有mytable表, 如果该表不存在,

RS.Open “Select * FROM mytable”, conn 就会出错,为何没有出错,很

有可能捕获的异常被忽略了。
检查包含文件conn.asp, 发现了异常处理代码:

On Error Resume Next

原来问题在此。

On Error Resume Next忽略了查询表时的失败以及后续的错误,造成进入死循环


那为何网站本来运行正常,现在却找不到mytable表了呢?仔细检查网站才发现“有‘客

’自远方来”,上传了后门工具、删除了多张数据表,害我忙活了一天。

更多的内容大家还可以到:

http://www.microsoft.com/china/technet/security/guidance/secmod93.mspx

查找更详细的安全设置

windows2003 iis6.0假死问题解决

这几天服务器总是运行缓慢,远程登录后发现一个w3wp.exe的进程占用了100% cpu。

问题的原因最终找到两个:

1.采用的jet 数据库连接方式存在问题:http://support.microsoft.com/?id=838306

补丁下载:

chs:WindowsServer2003-KB838306-x86-chs.exe

enu:WindowsServer2003-KB838306-x86-enu.exe

2.将access数据库扩展名改为asp

下面是我的差错过程和解决方案:

搜索一下发现类似问题还真不少,那个w3wp的进程是iis6.0的应用程序池,网上的说法

有两种,一是因为asp或者asp.net代码中含有死循环引起的。但是服务器上这么多网站

,谁知道那个网站出了问题。二是由于上面的jet连接数据库方式的bug引起的,下载

838306的补丁,或者升级到sp1可以解决这个问题,但是打了这个补丁后,有些网站的问

题依然存在。

又去搜索,有人说将每个网站建立独立的应用程序池,应用程序池的安全性帐户设为本

地服务即可。方法如下:

首先新建应用程序池:

然后将网站的应用程序池指向刚才建立的应用程序池:

在建立完所有应用程序池后,统一修改应用程序池的属性:

将应用程序池安全帐户指定为本地服务:

设置完这些之后,问题依然存在,这样一个网站出现问题,不致影响其他网站,但是这

个网站仍然占用大量资源,导致其它网站响应缓慢。不过在任务管理器中出现了每个应

用程序池的进程,因此可以找到具体出问题的进程了。

下面是寻找出错网站的过程:要找到这个网站,必须把有问题的进程跟该网站的应用程

序池联系起来。首先设置任务管理器的查看方式,加入PID的显示:

然后再命令行运行iisapp -a,可以看到PID跟应用程序池的对应关系:

再去iis中看该应用程序池对应的网站,有问题的网站就找到了,剩下的就是这个网站代

码中的问题了。

在某位网站管理员的纠缠不休下,我终于无法忍受,帮他找错误- – 无数次配置iis

,网站程序也换了,该升级的也升级了,问题还是存在,黔驴技穷,把网站下载到本地

看看到底怎么回事。当我试图打开他的数据库的时候,问题出现了:

他的数据库是.asp的扩展名,要先修改为.mdb才能打开,但是当我点击要改名字的时候

,我的电脑没有响应了~!看来问题在这个数据库了。

用命令行rename之后,打开数据库,修复,似乎没有任何问题,但是再改为.asp时,又

出现了刚才的问题。哈~原来是.asp的扩展名在作怪。

但是我试着将其他的数据库改为.asp,没有问题。根本原因不得而知,望知情者告知。

最后,在iis中随便添加了一个isapi对应到mdb,造成mdb无法执行,防止下载,将所有

的.asp的数据库改回.mdb,问题解决
(转)Windows Server 2003中的w3wp.exe进程大量占用cpu资源的各种问题解决方法 1:使用 MicrosoftJet 数据库引擎 Web 应用程序可能停止响应负载,造成假死:
原因:发生此问题是因为 Jet 数据库引擎中存在缺陷。 Microsoft Windows Server 2003 上只会出现此问题。 在 Windows Server 2003, COM+ 更改频率 CoFreeUnusedLibraries 函数被调用。 此更改导致 Jet 驱动程序以初始化频繁。 此行为可能导致死锁条件。
Web 服务器负载时最常出现此问题。
补丁下载:
chs:WindowsServer2003-KB838306-x86-chs.exe
enu:WindowsServer2003-KB838306-x86-enu.exe
在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。

解决内存占用过多,可以做以下配置:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。

解决CPU占用过多:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。

根据w3wp取得是那个一个应用程序池:
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。(iisapp实际上是存放在C:\windows\system32目录下的一个VBS脚本,全名为iisapp.vbs,如果你和我一样,也禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。

QUOTE:

环境:win2003server+IIs+ASP+MSSQL

现象:每隔一段时间(不定,有时几分钟,有时半小时)出现一次网站打开非常缓慢,甚至有时会出现超时打不开站点,此时查看服务器端的进程,CPU占用率达到100%,其中w3wp占用70~80%,SQL占用20~30%。所有服务器端的操作也变得缓慢。

初期解决方法:每次现象出现时,立即登录服务器直接结束w3wp进程或重启IIS服务,平均每天约十次操作,由于服务器存放于远程机房,所有操作都是远程控制进行,有时会因此出现远程无法连接登录的情况,只能通过电话通知机房管理人员重启服务器解决,此过程导致用户抱怨不断。

经过网上查阅资料,发现此类现象多数由于网页代码不合理所致,以下情况会导致此类现象发生:
1、代码中多处使用application、seesion等服务器缓存,导致服务器资料过度占用;
2、代码有不合理语法,死循环等;
3、数据库损坏,尤其是ACCESS数据库;
4、装过多第三方软件或插件,与IIS或网页功能代码冲突。

第一阶段排查:根据查阅到的参考资料逐项分析
1、服务器上所有站点代码均为公司设计人员自行编写,可证实并无过多调用服务器缓存语法(排除)
2、代码是否存在不合理语法(不确定)
3、根据情况来看,IIS进程占用率升高时,SQL占用率同时升高,应为SQL数据库的站点,根据现象判断,库或表应该正常,估计是数据方面可能有误;(不确定)
4、服务器端除了基本的系统服务,防杀毒及网站运作必备服务之外,并无多余第三方软件,机率不大(排除)。

经过以上分析判断,将不确定项连起来得出的结论是:某个采用了SQL数据库的网站网页代码存在不合理语法,导致IIS和SQL进程CPU占用率过高。

第二阶段排查:
确定范围,接着继续把范围缩小。
由于服务器上采用SQL数据库的站点并不多,便于建立独立进程ID来观察,将所有采用SQL数据库的站点在IIS管理器中分别建立独立的应用程序池,然后通过CMD界面输入:iisapp -a 命今查看并记录下各IIS池的进程ID号,通过多次现象重现时的观察,有个IIS进程ID是导致此次问题的罪魁祸首。

2003服务器用.net程序,w3wp老占cpu资源!怎么办?

w3wp.exe狂占内存的问题解决方案!

问:

好的asp.net程序,放在一台服务器上,客户端连接使用一段时间后,在服务器上打开任务管理器一看,发现有很多w3wp.exe,占用内存很大,达到1g,请问为什么会这样?有什么办法可以避免这种情况呢?

答:这主要是你的ASP.NET 开发的程序有 内存泄漏;对于 非托管资源,一定要注意 释放。

-==================================
问:我的具体情况是这样的:
服务器配置 至强2.8G 内存512M SCSI硬盘 2块 (软镜像)
系统 windows 2003
现在挂了一个asp.net开发的网站 访问量不大 但是出现一个 问题就是
每当服务器运行2-3天后 访问网站就特别慢 重启动服务器后就 正常了
查看进程使用内存的情况 发现w3wp.exe 和sqlservr.exe 进程 占用内存
相当大 达到了170多M( 每个) 物理可用内存几乎用光
(服务器重启动时 占用的内存很小才40多M 每个)
以前网站挂在一个虚拟机上 数据库是分开挂的 从没出现这种情况
后来 原版移植到新服务器上就 出现这样的问题~~
还个一问题就是 我在SQL企业管理器中查看SQL进程 发现有很多是 。net 引起的进程是sleeping 但是却占用了内存~ 无法释放

搞了很久了 一直都没解决
求救~~请高手 指教~~ 万分感谢~~~~~

答:IIS服务管理器—-》应用程序池—-》添加你的应用,并设置最大内存,当程序达到最大内存后其会自动重启。

我的问题跟你一样,不过我的内存是2G的,访问量比较高,一般是差不多运行24小时后就得重启,内存没耗完,W3WP进程占到一百八九十兆,SQL占了二百多兆时,就得重启,不然整个站点就当在那边….55555555,搞了快半个月了还是不行,痛苦啊

w3wp.exe就是你的ASP.NET应用宿主,如果你使用了大量的Session、Cache等资源,并且Session超市时间很长,那么内存占用量就比较大。应用池是为增加性能而设的一个特性,但是也消耗很大的内存。另外关掉Windows Server 2003里的大多数Service(那个不用都可以关掉),也可以节省一部分内存

1.怀疑在程序中应用的CACHE,
2.CACHE中有大量的数据
3.频繁刷新CACHE
4.没有设计好CACHE的方式

你的问题我以前也遇见过,我以前是用的Session,后我全部改成cook之后就好多了,应该是你的Session或是你的CACHE有问题(CACHE不太懂,但多多少应该是有的)

跟踪下SQL的调用记录,在每次往CACHE或SESSION写入大量数据时记录一下时间,看是否太过频繁

1.在win2003里asp.net的进程就是w3wp.exe

2.512M内存个人用是够用了,但是放在服务器上就有点不够用了,尤其是win2003 + asp.net +sql server 。尤其是sql server 他是很吃内存的,如果不控制的话,他会占光所有的物理内存(只剩下几十M 倒 100M 吧)。win2003 本身就要占用150M左右。也就剩不下什么了。

3.优化asp.net程序,就向楼上的说的那样,少用或不用session cache application之类的东西,再有就是是不是有翻页的地方,翻页处理不好也是会占很多内存的。

4.限制sql的内存。企业管理器——SQL的属性(一般是local)——“内存”标签
在这里看内存的设置,把最大值改成100M吧。

第四条是最快的方法,可以试一试。

我的一个自开发OA系统也存在这样的问题。
总结上面,大概原因是因为 session 和 cache 的不合理使用造成的。
我的应用程序中,确实用了很多的Session 和 Cache,
在 MSDN 中找到 了 “动态内存分配”这一篇,今天就试看看,是否有效。
希望有经验的朋友多给些信息,大家也好总结下出现类似错误的原因,谢谢!!

不知道你是什么网站。按理说是不会占用这么大的。如上你用了cache存放了超额的内容。当然。象session这种是不太可能占用这么大的了,或用了application 类似的一些有超长时间或永久保持性的对象来保存大量数据。如利用单例保存数据这些都有可能造成使用大量的内存。

建义2003系统安装至少1G内存。

w3wp.exe是2003下的一个iis进程,至于楼主说的sql占用内存,那有可能是因为你的sql没有设置占用内存上限

-==================================
w3wp.exe进程狂占内存和CPU问题 谁能帮我??
我的电脑:P4,512M内存。。当我用了aspx系统建站两个星期后,就出现了速度极慢的情况,在进程里看到w3wp.exe狂占内存和CPU.
刚开始几十人注册时速度都不会有影响,但注册会员有100名以上后,再有多人同时注册时就出现了速度极慢的情况,简直导致瘫痪。

IIS中设置不正确。在.NET中,不要在IIS里限制内存的使用,不然当内存不足的时候,IIS会不断的重新起动。每次起动有30秒的时候用来重新加载.NET包,所以,网站在加载.NET 包时狂慢。这也是我当时用.NET系统时碰到过的问题。

应用程序池--属性--回收--内存回收:消耗太多内存时回收工作进程:1、最大虚拟内存。2、最大使用的内存。两个选项都没选择
这里不要打勾。另一处是性能里的请求队列,不要打勾。
自已调调看就有经验了,我也是自已摸索出来的方法。

A:关于W3WP.EXE的知识.

Q : W3WP.EXE,应用程序,应用程序池之间的关系

A : 一个应用程序池可以包含多个应用程序,一个应用程序池创建一个W3WP.EXE进程.那么我们就不能简单的说一个进程池对应一个W3WP.EXE进程了!其实是多个应用进程池对应一个W3WP.EXE进程的.

Q : 如何启动和关闭W3WP.EXE这个进程

A : W3WP.EXE这个进程将在你访问www应用程序的时候启动.有人就会这么问了:”我启动了一个Web应用程序,发现系统自动创建了一个W3wp.exe进程。但我关闭这个Web应用程序后,发现这个刚创建的W3Wp.exe进程还在,请问如何关闭该进程。”这个进程不会在你关闭了这个程序以后,就马上关闭的.那是因为Http是无连接的访问,当你关闭了web网页,不会返回相应的关闭信息,所以W3WP.EXE这个进程不会因为你关闭了web应用程序尔关闭.

Q : 那么如何关闭这个进程呢?

A : 在应用程序池的配置中,”空闲超时”中设定合适的时间,系统默认的是20分钟.设定好指定的时间,那么在这个时间范围内没有在访问应用程序,那么系统会自动的关闭W3WP.EXE这个进程的.而不需要我们人为的干预的.也可以在Windows任务管理器里面,结束这个进程

Q : 如何让W3WP.EXE进程长时间的运行.

A : W3WP.EXE这个进程的默认生命是1740分钟,但依然是在这种默认的自然规律下,W3WP.EXE将在自己失业20分钟后,被系统直接枪杀.这样就可以看出,要想让W3WP.EXE长时间的生存,那我们可以通过”空闲超时”不作处理来达到我们的目的.

Q : 在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。

A: 解决内存占用过多,可以做以下配置
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。

解决CPU占用过多:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。

根据w3wp取得是那个一个应用程序池:
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。(iisapp实际上是存放在C:\windows\system32目录下的一个VBS脚本,全名为iisapp.vbs,如果禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。

A2 : by 小步舞曲
查看占用cpu的w3wp进程里面里面有那个用户呼叫的token

Q : 另一种加载了某程序后发生w3wp.exe问题

A: 修改C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config,再配置节点<processModel>中有一个属性”memoryLimit”,这个属性的值是一个百分比,默认为”60″(注意,是60%不是60M),即制定了ASP.NET进程能够使用所有物理内存的60%,当ASP.NET使用的内存量草果这个限额时,IIS会开始自动回收进程,即创建一个新的进程去负责应付HTTP请求,而将旧进程所占用的内存回收.

Page 48 of 49« First...203040«4546474849»