<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Blue 's Blog]]></title> 
<link>http://blog.bluephp.com/index.php</link> 
<description><![CDATA[网事如风,好风长吟…]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Blue 's Blog]]></copyright>
<item>
<link>http://blog.bluephp.com/read.php/266.htm</link>
<title><![CDATA[过冬论]]></title> 
<author>blue &lt;bluephp@gmail.com&gt;</author>
<category><![CDATA[路程]]></category>
<pubDate>Wed, 27 Aug 2008 15:17:51 +0000</pubDate> 
<guid>http://blog.bluephp.com/read.php/266.htm</guid> 
<description>
<![CDATA[ 
	又忙碌working了一天，8:30~19:30。希望明天不会超过18点。fuck。<br/>我的小脑告诉我，越忙越没前途。<br/>希望啊，指日可待。。。。。。。。。。。。。。<br/><br/>继二马的过冬论后，都在谈互联网的冬天。咱CEO也mail全体同仁准备过冬。<br/>其实冬天无时不在，危机也随时会来。长远的危机文化+合理的激励制度+危机营销=可持续发展，<br/>在不良大环境下，营造优良小环境。而不是临阵吼吼，吓吓小朋友。<br/>冬天早点来吧，夏天太热。
]]>
</description>
</item><item>
<link>http://blog.bluephp.com/read.php/265.htm</link>
<title><![CDATA[爱情人生书]]></title> 
<author>blue &lt;bluephp@gmail.com&gt;</author>
<category><![CDATA[路程]]></category>
<pubDate>Mon, 25 Aug 2008 07:08:47 +0000</pubDate> 
<guid>http://blog.bluephp.com/read.php/265.htm</guid> 
<description>
<![CDATA[ 
	　　你是我一生都翻不完的一本书，我知道我已经翻开的只是中间很小的一部分，我要在你的回忆里翻看这本书的开头，去阅读你少年里曾经孤独的伤感和童年时那么无知的快乐，用宽容的戏谑读你的青梅竹马，用平静的坦荡重读你长不熟的橄榄一样的初恋，你知道的，我的阅读是一次长长的旅行，你所有的陌生都将成为我走向你的道路两旁画一样的风景。<br/>　　每一次把目光从你的身上移开，都是一次小小的告别，因为我知道当我重新看见你时，一种新的爱情已经生长起来，像青青的常春藤悄悄蔓延起来，遮盖去岁月渐渐苍老的容颜——因为爱你，时时在你身上发现陌生的惊喜，因为陌生，使爱情在常痛常新中不断地死去，然后脱胎再生，然后更加蓬勃。用陌生制造新的陌生，在新的陌生里，爱情像应季的青草，在一片新鲜的土地上成长，疯长。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在你熟睡的时候，我想把手轻轻放在你的脸上，像是把手指贴住一本书的下一页。等着你睁开眼睛，等着世界在你的眼睛里翻开从未打开过的一页，也等着你醒来，等着你在我的眼前缓缓转动身姿——像一帧古典的长卷缓缓展开。<br/><hr/><br/>注：以前转的一篇，不记得出处了。
]]>
</description>
</item><item>
<link>http://blog.bluephp.com/read.php/264.htm</link>
<title><![CDATA[一场雨]]></title> 
<author>blue &lt;bluephp@gmail.com&gt;</author>
<category><![CDATA[路程]]></category>
<pubDate>Mon, 25 Aug 2008 00:42:58 +0000</pubDate> 
<guid>http://blog.bluephp.com/read.php/264.htm</guid> 
<description>
<![CDATA[ 
	啊啊啊啊啊啊啊啊啊，下的够大！！！
]]>
</description>
</item><item>
<link>http://blog.bluephp.com/read.php/263.htm</link>
<title><![CDATA[about job]]></title> 
<author>blue &lt;bluephp@gmail.com&gt;</author>
<category><![CDATA[路程]]></category>
<pubDate>Sat, 23 Aug 2008 17:03:06 +0000</pubDate> 
<guid>http://blog.bluephp.com/read.php/263.htm</guid> 
<description>
<![CDATA[ 
	这次新工作做了快两月了，感觉还是忒没劲。不晓得还在留恋啥。。。<br/>昨天凌晨收到ODP用户的邮件，进去一看，居然被除名了。做了半年的义务编辑，没怎么出力，加上这两月都没登陆。<br/>虽是义工，但还蛮喜欢。后来提交复工mail，晚上就收到确认重新复工了。把积压两年未检阅的website都编辑了次，狂人啊。<br/>奥运要结束了，从任何角度，我觉得都应该庆祝！
]]>
</description>
</item><item>
<link>http://blog.bluephp.com/read.php/262.htm</link>
<title><![CDATA[test]]></title> 
<author>blue &lt;bluephp@gmail.com&gt;</author>
<category><![CDATA[路程]]></category>
<pubDate>Fri, 22 Aug 2008 09:13:34 +0000</pubDate> 
<guid>http://blog.bluephp.com/read.php/262.htm</guid> 
<description>
<![CDATA[ 
	用了几天WP，程序是不错，扩展和接口都很强，但也没传说中那么N，<br/>感觉太耗资源了，cpu开销大，也许我的server配置低。<br/>还是用回bo-b了，也是开源的。模板结构我很喜欢。<br/><br/>Tags - <a href="http://blog.bluephp.com/go.php/tags/blog/" rel="tag">blog</a> , <a href="http://blog.bluephp.com/go.php/tags/blue/" rel="tag">blue</a> , <a href="http://blog.bluephp.com/go.php/tags/bo-blog/" rel="tag">bo-blog</a>
]]>
</description>
</item><item>
<link>http://blog.bluephp.com/read.php/261.htm</link>
<title><![CDATA[CSS 书写顺序]]></title> 
<author>blue &lt;bluephp@gmail.com&gt;</author>
<category><![CDATA[学会学习]]></category>
<pubDate>Wed, 18 Jun 2008 06:18:54 +0000</pubDate> 
<guid>http://blog.bluephp.com/read.php/261.htm</guid> 
<description>
<![CDATA[ 
	//显示属性<br/>display<br/>list-style<br/>position<br/>float<br/>clear<br/><br/>//自身属性<br/>width<br/>height<br/>margin<br/>padding<br/>border<br/>background<br/><br/>//文本属性<br/>color<br/>font<br/>text-decoration<br/>text-align<br/>vertical-align<br/>white-space<br/>other text<br/>content <br/>Tags - <a href="http://blog.bluephp.com/go.php/tags/css/" rel="tag">css</a> , <a href="http://blog.bluephp.com/go.php/tags/%25E9%25A1%25BA%25E5%25BA%258F/" rel="tag">顺序</a>
]]>
</description>
</item><item>
<link>http://blog.bluephp.com/read.php/259.htm</link>
<title><![CDATA[在JSP中如何从数据流中取得图片数据并按随意位置显示]]></title> 
<author>blue &lt;bluephp@gmail.com&gt;</author>
<category><![CDATA[学会学习]]></category>
<pubDate>Fri, 16 May 2008 09:55:06 +0000</pubDate> 
<guid>http://blog.bluephp.com/read.php/259.htm</guid> 
<description>
<![CDATA[ 
	在Servlet只能显示一个图片,并且用图层定位时写代码很是麻烦,并且如果是从流中读数据,就只能显示一个图片,同时,还不能解决图片和文字信息的同时输出和位置叠加<br/> &nbsp;在JSP中,我们可以用以下办法来解决<br/> &nbsp;首先,写一个Servlet负责从数据文件或数据库等数据来源中得到数据流并输出<br/> &nbsp;然后在JSP文件中多次调用此Servlet来请求并取的图片数据流并显示<br/> &nbsp;我的Servlet代码入下<div class="code"><br/>package zy.ser;<br/><br/> &nbsp;import java.io.File;<br/><br/> &nbsp;import java.io.FileInputStream;<br/><br/> &nbsp;import java.io.OutputStream;<br/><br/> &nbsp;import java.io.IOException;<br/><br/> &nbsp;import java.io.PrintWriter;<br/><br/> &nbsp;import javax.servlet.ServletException;<br/> <br/> &nbsp;import javax.servlet.http.HttpServlet;&#91;separator&#93;<br/><br/> &nbsp;import javax.servlet.http.HttpServletRequest;<br/><br/> &nbsp;import javax.servlet.http.HttpServletResponse;<br/><br/> &nbsp;/**<br/><br/> &nbsp;*@authorAdministrator<br/><br/> &nbsp;*<br/><br/> &nbsp;*TODO要更改此生成的类型注释的模板，请转至窗口－首选项－Java－代码样式－代码模板<br/><br/> &nbsp;*/<br/><br/> &nbsp;public class InitializeMap extends HttpServlet<br/> &nbsp;&#123;<br/><br/> &nbsp; &nbsp;String imgName;<br/><br/> &nbsp; &nbsp;public InitializeMap()&#123;<br/><br/> &nbsp; &nbsp;super();<br/><br/> &nbsp;&#125;<br/><br/> &nbsp;/**<br/><br/> &nbsp;*Destructionoftheservlet.<br/><br/><br/> &nbsp;*/<br/><br/> &nbsp;public void destroy()&#123;<br/><br/> &nbsp;super.destroy();//Justputs&quot;destroy&quot;stringinlog<br/><br/> &nbsp;//Putyourcodehere<br/><br/> &nbsp;&#125;<br/><br/> &nbsp;/**<br/><br/> &nbsp;*ThedoDeletemethodoftheservlet.<br/><br/><br/> &nbsp;*<br/><br/> &nbsp;*ThismethodiscalledwhenaHTTPdeleterequestisreceived.<br/><br/> &nbsp;*<br/><br/> &nbsp;*@paramrequest<br/><br/> &nbsp;*therequestsendbytheclienttotheserver<br/><br/> &nbsp;*@paramresponse<br/><br/> &nbsp;*theresponsesendbytheservertotheclient<br/><br/> &nbsp;*@throwsServletException<br/><br/> &nbsp;*ifanerroroccurred<br/><br/> &nbsp;*@throwsIOException<br/><br/> &nbsp;*ifanerroroccurred<br/><br/> &nbsp;*/<br/><br/> &nbsp;public void doDelete(HttpServletRequest request,<br/><br/> &nbsp;HttpServletResponse response) throws ServletException,IOException<br/> &nbsp;&#123;<br/><br/> &nbsp;//Putyourcodehere<br/><br/> &nbsp;&#125;<br/><br/> &nbsp;/**<br/><br/> &nbsp;*ThedoGetmethodoftheservlet.<br/><br/><br/> &nbsp;*<br/><br/> &nbsp;*Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.<br/><br/> &nbsp;*<br/><br/> &nbsp;*@paramrequest<br/><br/> &nbsp;*therequestsendbytheclienttotheserver<br/><br/> &nbsp;*@paramresponse<br/><br/> &nbsp;*theresponsesendbytheservertotheclient<br/><br/> &nbsp;*@throwsServletException<br/><br/> &nbsp;*ifanerroroccurred<br/><br/> &nbsp;*@throwsIOException<br/><br/> &nbsp;*ifanerroroccurred<br/><br/> &nbsp;*/<br/><br/> &nbsp;public void doGet(HttpServletRequest request,HttpServletResponse response)<br/><br/> &nbsp;throws ServletException,IOException&#123;<br/><br/> &nbsp;this.initURI(request);<br/><br/> &nbsp;File file=new File(this.getServletContext().getRealPath(&quot;img&#92;&#92;map1&#92;&#92;&quot;+this.imgName+&quot;.jpg&quot;));<br/><br/> &nbsp;System.out.println(file);<br/><br/> &nbsp;FileInputStream fis=new FileInputStream(file);<br/><br/> &nbsp;System.out.println(fis);<br/><br/> &nbsp;int length=fis.available();<br/><br/> &nbsp;System.out.println(length);<br/><br/> &nbsp;byte&#91;&#93;data=new byte&#91;length&#93;;<br/><br/> &nbsp;//readthestreamdataintothestream<br/><br/> &nbsp;fis.read(data);<br/><br/> &nbsp;fis.close();<br/><br/> &nbsp;OutputStream sos=response.getOutputStream();<br/><br/> &nbsp;//readthestreamdataintotheoutputstream<br/><br/> &nbsp;response.setContentType(&quot;image/*&quot;);<br/><br/> &nbsp;sos.write(data);<br/><br/> &nbsp;sos.flush();<br/><br/> &nbsp;sos.close();<br/><br/> &nbsp;&#125;<br/><br/> &nbsp;/**<br/><br/> &nbsp;*ThedoPostmethodoftheservlet.<br/><br/><br/> &nbsp;*<br/><br/> &nbsp;*Thismethodiscalledwhenaformhasitstagvaluemethodequalsto<br/><br/> &nbsp;*post.<br/><br/> &nbsp;*<br/><br/> &nbsp;*@paramrequest<br/><br/> &nbsp;*therequestsendbytheclienttotheserver<br/><br/> &nbsp;*@paramresponse<br/><br/> &nbsp;*theresponsesendbytheservertotheclient<br/><br/> &nbsp;*@throwsServletException<br/><br/> &nbsp;*ifanerroroccurred<br/><br/> &nbsp;*@throwsIOException<br/><br/> &nbsp;*ifanerroroccurred<br/><br/> &nbsp;*/<br/><br/> &nbsp;public void doPost(HttpServletRequest request,HttpServletResponse response)<br/><br/> &nbsp;throws ServletException,IOException&#123;<br/><br/> &nbsp;response.setContentType(&quot;text/html&quot;);<br/><br/> &nbsp;PrintWriter out=response.getWriter();<br/><br/> &nbsp;out.println(&quot;&quot;);<br/><br/> &nbsp;out.println(&quot;&quot;);<br/><br/> &nbsp;out.println(&quot;&quot;);<br/><br/> &nbsp;out.println(&quot;&quot;);<br/><br/> &nbsp;out.print(&quot;Thisis&quot;);<br/><br/> &nbsp;out.print(this.getClass());<br/><br/> &nbsp;out.println(&quot;,usingthePOSTmethod&quot;);<br/><br/> &nbsp;out.println(&quot;&quot;);<br/><br/> &nbsp;out.println(&quot;&quot;);<br/><br/> &nbsp;out.flush();<br/><br/> &nbsp;out.close();<br/><br/> &nbsp;&#125;<br/><br/> &nbsp;/**<br/><br/> &nbsp;*ThedoPutmethodoftheservlet.<br/><br/><br/> &nbsp;*<br/><br/> &nbsp;*ThismethodiscalledwhenaHTTPputrequestisreceived.<br/><br/> &nbsp;*<br/><br/> &nbsp;*@paramrequest<br/><br/> &nbsp;*therequestsendbytheclienttotheserver<br/><br/> &nbsp;*@paramresponse<br/><br/> &nbsp;*theresponsesendbytheservertotheclient<br/><br/> &nbsp;*@throwsServletException<br/><br/> &nbsp;*ifanerroroccurred<br/><br/> &nbsp;*@throwsIOException<br/><br/> &nbsp;*ifanerroroccurred<br/><br/> &nbsp;*/<br/><br/> &nbsp;public void doPut(HttpServletRequest request,HttpServletResponse response)<br/><br/> &nbsp;throws ServletException,IOException&#123;<br/><br/> &nbsp;//Putyourcodehere<br/><br/> &nbsp;&#125;<br/><br/> &nbsp;/**<br/><br/> &nbsp;*Returnsinformationabouttheservlet,suchasauthor,version,and<br/><br/> &nbsp;*copyright.<br/><br/> &nbsp;*<br/><br/> &nbsp;*@returnStringinformationaboutthisservlet<br/><br/> &nbsp;*/<br/><br/> &nbsp;public String getServletInfo()&#123;<br/><br/> &nbsp;return &quot;ThisismydefaultservletcreatedbyEclipse&quot;;<br/><br/> &nbsp;&#125;<br/><br/> &nbsp;/**<br/><br/> &nbsp;*Initializationoftheservlet.<br/><br/><br/> &nbsp;*<br/><br/> &nbsp;*@throwsServletException<br/><br/> &nbsp;*ifanerroroccure<br/><br/> &nbsp;*/<br/><br/> &nbsp;public void init() throws ServletException&#123;<br/><br/> &nbsp;//Putyourcodehere<br/><br/> &nbsp;&#125;<br/><br/> &nbsp;public void initURI(HttpServletRequest request)&#123;<br/><br/> &nbsp;this.imgName=request.getParameter(&quot;imgName&quot;);<br/><br/> &nbsp;&#125;<br/><br/> &nbsp;&#125;<br/></div><br/>Tags - <a href="http://blog.bluephp.com/go.php/tags/jsp/" rel="tag">jsp</a> , <a href="http://blog.bluephp.com/go.php/tags/%25E6%2595%25B0%25E6%258D%25AE%25E6%25B5%2581/" rel="tag">数据流</a> , <a href="http://blog.bluephp.com/go.php/tags/%25E5%259B%25BE%25E5%25BD%25A2/" rel="tag">图形</a>
]]>
</description>
</item><item>
<link>http://blog.bluephp.com/read.php/258.htm</link>
<title><![CDATA[Linux/Unix数据自动备份工具]]></title> 
<author>blue &lt;bluephp@gmail.com&gt;</author>
<category><![CDATA[学会学习]]></category>
<pubDate>Mon, 14 Jan 2008 03:57:32 +0000</pubDate> 
<guid>http://blog.bluephp.com/read.php/258.htm</guid> 
<description>
<![CDATA[ 
	primabackup.sh 说明文档<br/>版本：2.0.2<br/><br/>工具下载地址：<a href="http://swsoft.com.cn/downloads/Prima/Tools/primabackup-2.0.2.tar.gz" target="_blank">http://swsoft.com.cn/downloads/Prima/Tools/primabackup-2.0.2...</a><br/>本地下载：<a href="attachment/200801/1200283023_0.gz">点击这里下载文件</a> <br/><br/>0. 版本更新<br/>* 2006-11-23 SWsoft.com.cn v2.0.2<br/>- [fix] 修复resin路径<br/><br/>* 2005-03-28 ValueOf.com v2.0.1<br/>- [fix] 备份resin和tomcat的配置<br/>- [fix] 修复配置备份子目录的位置<br/><br/>1. 概述<br/>primabackup.sh脚本可用来备份数据。<br/> <br/>2. 安装<br/>解压：<br/>tar zxf primabackup.tar.gz<br/><br/>3. 配置<br/>要求的设定<br/>3.1 备份到那个目录<br/>BACKUP_BASE_DIR="/backup" 备份文件所在的根目录<br/><br/>3.2 备份哪些数据<br/>WEB=1 备份web<br/>EMAIL=1 备份email<br/>DNS=1 备份dns<br/>MYSQL=1 备份mysql<br/>CONTROL=1 备份主控界面目录<br/><br/>如果不需要备份某个功能，则将其改成0<br/><br/>3.3 保留多少份旧的备份？<br/>即除了当前最新的这个备份之外，还保留几个备份，最少为0个，默认为1<br/>如果设为0，则只保留一个备份，每次备份的时候都会把以前的备份删除<br/>max_old_backup=1<br/><br/>4. 备份的过程<br/>首先根据设置，决定要备份的数据和配置，然后创建<br/>备份根目录下的以日期时间为名字的目录，在这个目录的data子目录下备份数据的tar包<br/>在conf子目录下备份配置文件和目录。<br/><br/>5. 数据位置<br/>web数据的位置，默认/www/users，程序会自动到prima.conf里面找home_base配置，如果找到则用更改之后的配置<br/>mail数据的位置，默认/var/vmail，程序会自动到prima.conf里面找mail_space_base配置，如果找到则用更改之后的配置<br/>dns数据的位置，默认/var/named，程序会自动到prima.conf里面找zonefile_base配置，如果找到则用更改之后的配置<br/>mysql数据的位置，linux默认/var/lib/mysql，FreeBSD默认/var/db/mysql<br/><br/>如果prima.conf中打开了网站生成、计数器应用，则会备份相应的数据目录。<br/><br/>程序根据prima.conf中use_mod_caucho/use_mod_jk来判断是否备份相应的resin和tomcat配置<br/><br/>named.conf默认/etc/named.conf，程序会自动到prima.conf里面找named_conf配置，如果找到则用更改之后的配置<br/><br/>如果是主控服务器，请务必打开MYSQL备份。<br/><br/>6. 关于测试模式<br/>如果将<br/>#testmode=1<br/>改成<br/>testmode=1<br/>则，只打印要做的事情，不做实际备份。<br/><br/>7. 备份文件的命名方法<br/>对于目录的备份。备份文件是目录名.tar.gz，如<br/>/www/users -> /backup/20040903-140101/data/users.tar.gz<br/><br/>对于文件的备份，则直接是文件名，如<br/>/etc/named.conf -> /backup/20040903-140101/conf/named.conf<br/><br/>完整列表如下：<br/>/www/prima -> data/prima.tar.gz<br/>/www/users -> data/users.tar.gz<br/>/var/vmail -> data/vmail.tar.gz<br/>/var/named -> data/named.tar.gz<br/>/var/lib/mysql -> data/mysql.tar.gz<br/>/www/prima/htdocs/apps/GenComSite/sitepage -> data/sitepage<br/>/www/prima/htdocs/apps/GenComSite/upload -> data/upload.tar.gz<br/>/var/Counter -> Counter.tar.gz<br/><br/>/usr/prima/etc -> conf/etc.tar.gz<br/>/usr/prima/postfix/conf -> conf/conf.tar.gz<br/>/etc/named.conf -> conf/named.conf<br/>/usr/local/resin/conf/host.conf -> conf/host.conf<br/>/var/tomcat4/conf/server.xml -> conf/server.xml<br/>/www/prima/htdocs/apps/phpMyAdmin/config.inc.php -> conf/config.inc.php<br/><br/>8. 注意事项<br/>8.1<br/>注意：此备份为完整备份，备份目录应有足够空间容纳。<br/>虽然在备份过程，经过压缩，空间会减小，但建议备份目录至少和数据全部大小相同。<br/>这样才能保证容纳至少一个完整备份，一般情况下，可以容纳两个完整备份。<br/><br/>8.2<br/>在进行备份的时候，对cpu和磁盘的负担是比较重的，建议加上nice以降低程序执行优先级，而且最好在凌晨运行。<br/>如：<br/># nice ./primabackup.sh<br/><br/>9. 通过cronjob自动周期性备份<br/>通过修改/etc/crontab，可以将备份设为周期性自动的。<br/>/etc/crontab中每一条都是一个定期任务，#号开头的除外。<br/>格式如下：<br/>分钟 小时 月中的某一天 月 星期几 执行者 命令行<br/><br/>例如：<br/>0 2 * * * root /bin/cmd<br/>即在每天的凌晨2点以root身份执行/bin/cmd命令<br/><br/>假如要配置备份任务每天2点执行，将输出的消息写到日志文件里，则在/etc/crontab中加入：<br/>0 2 * * * root nice /root/primabackup/primabackup.sh >> /var/log/primabackup.log<br/>上面假设备份脚本的位置在/root/primabackup/primabackup.sh<br/>日志放在/var/log/primabackup.log<br/>加了nice降低执行优先级。<br/><br/>如果要每周六2点执行，则：<br/>0 2 * * 6 root nice /root/primabackup/primabackup.sh >> /var/log/primabackup.log<br/>(6代表星期六，0 或 7 代表星期天)<br/><br/>修改/etc/crontab不用重起任何服务。<br/>Tags - <a href="http://blog.bluephp.com/go.php/tags/linux/" rel="tag">linux</a> , <a href="http://blog.bluephp.com/go.php/tags/unix/" rel="tag">unix</a> , <a href="http://blog.bluephp.com/go.php/tags/%25E8%2599%259A%25E6%258B%259F%25E4%25B8%25BB%25E6%259C%25BA/" rel="tag">虚拟主机</a> , <a href="http://blog.bluephp.com/go.php/tags/%25E5%25A4%2587%25E4%25BB%25BD/" rel="tag">备份</a> , <a href="http://blog.bluephp.com/go.php/tags/%25E8%2587%25AA%25E5%258A%25A8%25E5%25A4%2587%25E4%25BB%25BD/" rel="tag">自动备份</a> , <a href="http://blog.bluephp.com/go.php/tags/%25E6%2595%25B0%25E6%258D%25AE%25E5%25A4%2587%25E4%25BB%25BD/" rel="tag">数据备份</a>
]]>
</description>
</item><item>
<link>http://blog.bluephp.com/read.php/257.htm</link>
<title><![CDATA[Linux系统防火墙防止SYN DOS攻击 ]]></title> 
<author>blue &lt;bluephp@gmail.com&gt;</author>
<category><![CDATA[学会学习]]></category>
<pubDate>Wed, 09 Jan 2008 06:00:09 +0000</pubDate> 
<guid>http://blog.bluephp.com/read.php/257.htm</guid> 
<description>
<![CDATA[ 
	虚拟主机服务商在运营过程中可能会受到黑客攻击，常见的攻击方式有SYN，DDOS等。 <br/>通过更换IP，查找被攻击的站点可能避开攻击，但是中断服务的时间比较长。比较彻底的解决方法是添置硬件防火墙。不过，硬件防火墙价格比较昂贵。可以考虑利用Linux系统本身提供的防火墙功能来防御。 <br/><br/>1. 抵御SYN <br/>SYN攻击是利用TCP/IP协议3次握手的原理，发送大量的建立连接的网络包，但不实际建立连接，最终导致被攻击服务器的网络队列被占满，无法被正常用户访问。 <br/>Linux内核提供了若干SYN相关的配置，用命令：sysctl -a &#124; grep syn <br/>看到： <br/>net.ipv4.tcp_max_syn_backlog = 1024 <br/>net.ipv4.tcp_syncookies = 0 <br/>net.ipv4.tcp_synack_retries = 5 <br/>net.ipv4.tcp_syn_retries = 5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br/><br/>tcp_max_syn_backlog是SYN队列的长度，tcp_syncookies是一个开关，是否打开SYN Cookie功能，该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN的重试次数。 <br/><br/>加大SYN队列长度可以容纳更多等待连接的网络连接数，打开SYN Cookie功能可以阻止部分SYN攻击，降低重试次数也有一定效果。 <br/><br/>调整上述设置的方法是： <br/>增加SYN队列长度到2048：sysctl -w net.ipv4.tcp_max_syn_backlog=2048 &nbsp;<br/>打开SYN COOKIE功能：sysctl -w net.ipv4.tcp_syncookies=1 <br/>降低重试次数：<br/>sysctl -w net.ipv4.tcp_synack_retries=3 <br/>sysctl -w net.ipv4.tcp_syn_retries=3 <br/><br/>为了系统重启动时保持上述配置，可将上述命令加入到/etc/rc.d/rc.local文件中。 <br/><br/>2. 抵御DDOS <br/>DDOS，分布式拒绝访问攻击，是指黑客组织来自不同来源的许多主机，向常见的端口，如80，25等发送大量连接，但这些客户端只建立连接，不是正常访问。由于一般Apache配置的接受连接数有限（通常为256），这些“假” 访问会把Apache占满，正常访问无法进行。 <br/><br/>Linux提供了叫ipchains的防火墙工具，可以屏蔽来自特定IP或IP地址段的对特定端口的连接。使用ipchains抵御DDOS，就是首先通过netstat命令发现攻击来源地址，然后用ipchains命令阻断攻击。发现一个阻断一个。 <br/><br/>*** 打开ipchains功能 <br/>首先查看ipchains服务是否设为自动启动：chkconfig --list ipchains <br/>输出一般为：ipchains 0:off 1:off 2:on 3:on 4:on 5:on 6:off <br/>如果345列为on，说明ipchains服务已经设为自动启动 <br/>如果没有，可以用命令： <br/>chkconfig --add ipchains <br/>将ipchains服务设为自动启动 <br/>其次，察看ipchains配置文件/etc/sysconfig/ipchains是否存在。如果这一文件不存在，ipchains即使设为自动启动，也不会生效。缺省的ipchains配置文件内容如下： <br/><br/># Firewall configuration written by lokkit <br/># Manual customization of this file is not recommended. <br/># Note: ifup-post will punch the current nameservers through the <br/># firewall; such entries will *not* be listed here. <br/>:input ACCEPT <br/>:forward ACCEPT <br/>:output ACCEPT <br/>-A input -s 0/0 -d 0/0 -i lo -j ACCEPT <br/># allow http,ftp,smtp,ssh,domain via tcp; domain via udp <br/>-A input -p tcp -s 0/0 -d 0/0 pop3 -y -j ACCEPT <br/>-A input -p tcp -s 0/0 -d 0/0 http -y -j ACCEPT <br/>-A input -p tcp -s 0/0 -d 0/0 https -y -j ACCEPT <br/>-A input -p tcp -s 0/0 -d 0/0 ftp -y -j ACCEPT <br/>-A input -p tcp -s 0/0 -d 0/0 smtp -y -j ACCEPT <br/>-A input -p tcp -s 0/0 -d 0/0 ssh -y -j ACCEPT <br/>-A input -p tcp -s 0/0 -d 0/0 domain -y -j ACCEPT <br/>-A input -p udp -s 0/0 -d 0/0 domain -j ACCEPT <br/># deny icmp packet <br/>#-A input -p icmp -s 0/0 -d 0/0 -j DENY <br/># default rules <br/>-A input -p tcp -s 0/0 -d 0/0 0:1023 -y -j REJECT <br/>-A input -p tcp -s 0/0 -d 0/0 2049 -y -j REJECT <br/>-A input -p udp -s 0/0 -d 0/0 0:1023 -j REJECT <br/>-A input -p udp -s 0/0 -d 0/0 2049 -j REJECT <br/>-A input -p tcp -s 0/0 -d 0/0 6000:6009 -y -j REJECT <br/>-A input -p tcp -s 0/0 -d 0/0 7100 -y -j REJECT <br/><br/>如果/etc/sysconfig/ipchains文件不存在，可以用上述内容创建之。创建之后，启动ipchains服务：/etc/init.d/ipchains start <br/><br/>*** 用netstat命令发现攻击来源 <br/>假如说黑客攻击的是Web 80端口，察看连接80端口的客户端IP和端口，命令如下： <br/>netstat -an -t tcp &#124; grep ":80" &#124; grep ESTABLISHED &#124; awk '&#123;printf "%s %s&#92;n",$5,$6&#125;' &#124; sort <br/>输出： <br/>161.2.8.9:123 FIN_WAIT2 <br/>161.2.8.9:124 FIN_WAIT2 <br/>61.233.85.253:23656 FIN_WAIT2 <br/>... <br/>第一栏是客户机IP和端口，第二栏是连接状态 <br/>如果来自同一IP的连接很多（超过50个），而且都是连续端口，就很可能是攻击。 <br/>如果只希望察看建立的连接，用命令： <br/>netstat -an -t tcp &#124; grep ":80" &#124; grep ESTABLISHED &#124; awk '&#123;printf "%s %s&#92;n",$5,$6&#125;' &#124; sort <br/><br/>*** 用ipchains阻断攻击来源 <br/>用ipchains阻断攻击来源，有两种方法。一种是加入到/etc/sysconfig/ipchains里，然后重启动ipchains服务。另一种是直接用ipchains命令加。屏蔽之后，可能还需要重新启动被攻击的服务，是已经建立的攻击连接失效 <br/><br/>* 加入/etc/sysconfig/ipchains <br/>假定要阻止的是218.202.8.151到80的连接，编辑/etc/sysconfig/ipchains文件，在:output ACCEPT行下面加入： <br/>-A input -s 218.202.8.151 -d 0/0 http -y -j REJECT <br/>保存修改，重新启动ipchains： <br/>/etc/init.d/ipchains restart <br/>如果要阻止的是218.202.8的整个网段，加入： <br/>-A input -s 218.202.8.0/255.255.255.0 -d 0/0 http -y -j REJECT <br/><br/>* 直接用命令行 <br/>加入/etc/sysconfig/ipchains文件并重起ipchains的方法，比较慢，而且在ipchains重起的瞬间，可能会有部分连接钻进来。最方便的方法是直接用ipchains命令。 <br/>假定要阻止的是218.202.8.151到80的连接，命令： <br/>ipchains -I input 1 -p tcp -s 218.202.8.151 -d 0/0 http -y -j REJECT <br/>如果要阻止的是218.202.8的整个网段，命令： <br/>ipchains -I input 1 -p tcp -s 218.202.8.0/255.255.255.0 -d 0/0 http -y -j REJECT <br/>其中，-I的意思是插入，input是规则连，1是指加入到第一个。 <br/><br/>您可以编辑一个shell脚本，更方便地做这件事，命令： <br/>vi blockit <br/>内容： <br/>#!/bin/sh <br/>if [ ! -z "$1" ] ; then <br/>echo "Blocking: $1" <br/>ipchains -I input 1 -p tcp -s "$1" -d 0/0 http -y -j REJECT <br/>else <br/>echo "which ip to block?" <br/>fi <br/>保存，然后：chmod 700 blockit <br/>使用方法： <br/>./blockit 218.202.8.151 <br/>./blockit 218.202.8.0/255.255.255.0 <br/><br/>上述命令行方法所建立的规则，在重起之后会失效，您可以用ipchains-save命令打印规则:ipchains-save <br/>输出： <br/>:input ACCEPT <br/>:forward ACCEPT <br/>:output ACCEPT <br/>Saving `input'. <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i lo -j ACCEPT <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 110:110 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 80:80 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 22:22 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 88:88 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 89:89 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 90:90 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 91:91 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 8180:8180 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 443:443 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 21:21 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 25:25 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 22:22 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 53:53 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 9095:9095 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 8007:8007 -p 6 -j ACCEPT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 53:53 -p 17 -j ACCEPT <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 0:1023 -p 6 -j REJECT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 2049:2049 -p 6 -j REJECT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 0:1023 -p 17 -j REJECT <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 2049:2049 -p 17 -j REJECT <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 6000:6009 -p 6 -j REJECT -y <br/>-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 7100:7100 -p 6 -j REJECT -y <br/>您需要把其中的"Saving `input'."去掉，然后把其他内容保存到/etc/sysconfig/ipchains文件，这样，下次重起之后，建立的规则能够重新生效。 <br/><br/>3. 如果使用iptables <br/>RH 8.0以上开始启用iptables替代ipchains，两者非常类似，也有差别的地方。 <br/>* 启用iptables <br/>如果/etc/sysconfig/下没有iptables文件，可以创建： <br/># Firewall configuration written by lokkit <br/># Manual customization of this file is not recommended. <br/># Note: ifup-post will punch the current nameservers through the <br/># firewall; such entries will *not* be listed here. <br/>*filter <br/>:INPUT ACCEPT [0:0] <br/>:FORWARD ACCEPT [0:0] <br/>:OUTPUT ACCEPT [0:0] <br/>:RH-Lokkit-0-50-INPUT - [0:0] <br/>-A INPUT -j RH-Lokkit-0-50-INPUT <br/>-A RH-Lokkit-0-50-INPUT -i lo -j ACCEPT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport ftp -j ACCEPT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport ssh -j ACCEPT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport http -j ACCEPT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport smtp -j ACCEPT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport pop3 -j ACCEPT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport mysql -j ACCEPT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2001 -j ACCEPT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport domain -j ACCEPT <br/>-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport domain -j ACCEPT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2049 --syn -j REJECT <br/>-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 0:1023 -j REJECT <br/>-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 2049 -j REJECT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 6000:6009 --syn -j REJECT <br/>-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j REJECT <br/>COMMIT <br/>以上配置允许了ftp, ssh, http, smtp, pop3, mysql, 2001(Prim@Hosting ACA端口)，domain端口。 <br/><br/>* 启动iptables <br/>/etc/init.d/iptables start <br/><br/>* 设置iptables为自动启动 <br/>chkconfig --level 2345 iptables on <br/><br/>* 用iptables屏蔽IP <br/>iptables -I RH-Lokkit-0-50-INPUT 1 -p tcp -m tcp -s 213.8.166.227 --dport 80 --syn -j REJECT <br/>注意到，和ipchains的区别是： <br/>-I 后面跟的规则名称的参数和ipchains不同，不是统一的input，而是在/etc/sysconfig/iptables里定义的那个<br/>多了-m tcp 指定端口的参数是--dport 80 <br/>多了--syn参数，可以自动检测sync攻击 <br/><br/>使用iptables禁止ping：-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 2 -j ACCEPT-A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT --reject-with icmp-port-unreachable<br/>Tags - <a href="http://blog.bluephp.com/go.php/tags/linux/" rel="tag">linux</a> , <a href="http://blog.bluephp.com/go.php/tags/%25E9%2598%25B2%25E7%2581%25AB%25E5%25A2%2599/" rel="tag">防火墙</a> , <a href="http://blog.bluephp.com/go.php/tags/iptables/" rel="tag">iptables</a> , <a href="http://blog.bluephp.com/go.php/tags/syn/" rel="tag">syn</a> , <a href="http://blog.bluephp.com/go.php/tags/ddos/" rel="tag">ddos</a> , <a href="http://blog.bluephp.com/go.php/tags/%25E6%2594%25BB%25E5%2587%25BB/" rel="tag">攻击</a>
]]>
</description>
</item><item>
<link>http://blog.bluephp.com/read.php/256.htm</link>
<title><![CDATA[asp.net 2.0时遇到Server Application Unavailable]]></title> 
<author>blue &lt;bluephp@gmail.com&gt;</author>
<category><![CDATA[学会学习]]></category>
<pubDate>Sun, 04 Nov 2007 14:27:24 +0000</pubDate> 
<guid>http://blog.bluephp.com/read.php/256.htm</guid> 
<description>
<![CDATA[ 
	　　The web application you are attempting to access on this web server is currently unavailable. &nbsp;Please hit the "Refresh" button in your web browser to retry your request.<br/><br/>　　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.<br/><br/>　　查看Event Viewer,看到的错误为:<br/><br/>　　Error:Failed to execute request because the App-Domain could not be created. Error: 0x80070005 Access is denied. <br/><br/>　　解决办法:在该web sites的virtual directory下,将Permissions设置一下,里面应包含：<br/>ASP.NET<br/>IWAM_MachineName<br/>Local_Service<br/>Network_Service<br/>System<br/>　　而且权限要设置为write & read.<br/>　　设置后,一切运行正常.<br/><br/> <br/><br/>另外还有一种可能：<br/><br/>　　放到打算购买的虚拟主机上（试用期内，我让他安装了.net 2.0）还是不行，他们应该是高手了，一直以为是自己发布的方式有问题，广求人，狂看帖，最终知道了是我安装了。net framework 1.1 和 2.0后，iis的应用程序池的配置有误，网上看到的解决办法如下：<br/><br/>　　你的.net 2.0 真的能与1.1 安全正确地运行在同一台电脑上吗？ 小心Server Application Unavailable 错误 <br/>　　答案当然是肯定的。但不作任何处理的默认情况下，会出问题！ <br/><br/>　　各位在同一电脑上同时安装并运行.net 1.1 和 .net 2.0 两个版本的朋友要小心啊！ <br/><br/>　　您的项目是不是时不时会出现 Server Application Unavailable 错误呢？或者一直连续都出这个错误! <br/><br/>　　今天我朋友将其从1.1升级至2.0的项目发布至公司安装有windows 2003的服务器上，结果2.0的项目始终无法成功运行。甚至还造成服务器上正在为全公司服务的基于.net Framework 1.1的web程序出错。他感觉很奇怪，在自己电脑上明明运行的很好啊，怎么一到服务器上就不行了？ <br/>他发布2.0 web程序的过程如下： <br/><br/>　　1、在服务器上创建一个目录，然后将发布后的所有Web程序的文件复制到这个新建的目录。 <br/>　　2、在服务器的IIS上新建一个虚拟目录，然后将其配置成可以执行脚本的应用程序，（过程与创建.net Framework 1.1版本的程序相同。） 然后，将此虚拟目录的.net Framework 配置成2.0。 <br/>　　大功告成后，开始访问刚配置的程序，却得到如下错误： <br/><br/><br/>Server Application Unavailable <br/>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. <br/><br/>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. <br/><br/>　　之后向我求助，经过仔细阅读了IIS帮助文档，才发现，原来这个错误是由 IIS6 应用程序隔离机制造成的。IIS默认的应用程序隔离机制被称为：“工作进程隔离模式”，在此模式中，应用程序被分为多个组，每个组就是一个“应用程序池” ，每个应用程序池之间是相互隔离的。隔离的好处当然就是安全啦，稳定啦，等等。IIS中的每个应用程序池由一个“工作进程”分别进行管理，也就是"W3wp.exe" 。如果有多个应用程序池中的程序运行，我们就能看到多个w3wp.exe。我们平时新建的虚拟目录都默认被指向IIS6的“DefaultAppPool" 中，所以在默认情况下，不管你有多少个asp.net程序在运行，在“Windows任务管理器”中你只能看到一个w3wp.exe进程。 <br/><br/>　　出现上述错误的原因是： .net Framework 2.0的程序与.net Framework1.1(或1.0)的程序被放入同一个应用程序池（默认情况下放入DefaultAppPool池），也就是由同一个工作进程: w3wp.exe 进行管理，而单个工作进程是无法同时管理不同的程序（或者不同版本的程序）的。如果先访问.net framework 1.1的页面，则工作进程先加载并管理了 1.1版本的程序集，此时访问.net framework 2.0的web程序页面，Server Application Unavailable 错误就出来了。 反之，如果在默认应用程序池的w3wp.exe尚未启动前先访问了 2.0的web程序（此时应用程序集已经加载了.net framework2.0的Web程序集），再访问1.1或1.0的Web程序页面时，同样会出现“服务器应用程序不可用” 这样的中文提示。（您可以结束掉以前的w3wp.exe进行测试。） <br/><br/>　　我朋友之所以在自己的开发机器上没出现此错误是因为他在开发基于.net framework 2.0的项目时，一直都只访问这个2.0的web程序，跟本未曾访问过其他web程序。而朋友的服务器上已经存在1.0 的项目，并且一直有人使用。这个错误在今天之前从未碰到过，其实大部分人在开发一个项目时，都只访问正在开发的项目。很有可能就忽略了这个问题，而到了发布的时候却出现错误，搞得手忙脚乱。 <br/><br/>　　解决办法：在IIS中新建一个应用程序池，然后选中你的 基于.net framework2.0的虚拟目录，点“属性”－》在“应用程序池” 中选择刚才新建的的应用程序池，点击“确定”。 <br/><br/>　　如果你的电脑主要是为了学习，开发，测试web程序，完全可以建一个类似于名为"dotnet2.0"的应用程序池，以后所有新建的2.0的虚拟目录都指向此应用程序池。<br/><br/>---------------------------------------------------------------------------------------------------------------------------<br/><br/>　　这个在微软官方的解析为：<br/><br/>　　原因<br/>< SCRIPT type=text/javascript>loadTOCNode(1, 'cause');< /SCRIPT> <br/><br/>　　出现此问题的原因是进程模型用户帐户（默认情况下为 ASPNET）没有所需系统文件和文件夹的正确用户权限，以便运行 ASP.NET 工作进程。 <br/>　　替代方法<br/>< SCRIPT type=text/javascript>loadTOCNode(1, 'workaround');< /SCRIPT> <br/><br/>　　要解决此问题，请验证该 ASPNET 帐户拥有如下所示的正确用户权限： • %windir%&#92;Microsoft.NET&#92;Framework&#92;Version&#92;Temporary ASP.NET 文件：完全控制 <br/>• %windir%&#92;Temp：完全控制 <br/>• 应用程序文件夹：读取 <br/>• %installroot% 层次结构（例如，%windir%&#92;Microsoft.Net&#92;Framework&#92;Version）：读取 <br/>• %windir%&#92;Assembly：读取<br/><br/>注意：这是全局程序集缓存。不能直接使用 Windows 资源管理器编辑此文件夹的 ACL。正确做法是，打开命令窗口，然后运行以下命令： <br/>cacls %windir%&#92;assembly /e /t /p domain&#92;useraccount:R<br/>另外，在使用 Windows 资源管理器之前，请先运行以下命令以取消对 Shfusion.dll 的注册： <br/>regsvr32–u shfusion.dll<br/>在 Windows 资源管理器中设置了用户权限后，请运行以下命令重新注册 Shfusion.dll： <br/>regsvr32 shfusion.dll <br/>• 网站根目录（例如，%root%&#92;Inetpub&#92;Wwwroot）或默认网站指向的路径：读取 <br/>• %windir%&#92;System32：读取<br/>（通常情况下，ASPNET 帐户已被授予了用户组成员的用户权限。） <br/><br/><br/>错误2<br/>基本上，這個情況最可能發生在第一次執行 .Net framework 2.0 ，原因不明，但底下的做法大致可以解決此問題：<br/><br/>1.首先開啟「命令窗口」，並切換目錄到 %SystemRoot%&#92;Microsoft.Net&#92;Framework&#92; (%SystemRoot% 視你 Windows 安裝目錄而定，一般是在 C:&#92;Windows)<br/>2.在命令行執行 "net stop w3svc" 終止 w3svc 服務<br/>3.切換到下层目錄 v2.0.5.xxx <br/>4.執行 "aspnet_regiis.exe -ua" 卸载 .Net <br/>5.重新安裝 .Net 到 IIS 中 &nbsp;执行 "aspnet_regiis.exe -i" <br/>6.重新启動 w3svc &nbsp; 执行 "net start w3svc".<br/><br/><br/>Tags - <a href="http://blog.bluephp.com/go.php/tags/asp.net/" rel="tag">asp.net</a> , <a href="http://blog.bluephp.com/go.php/tags/2.0/" rel="tag">2.0</a>
]]>
</description>
</item>
</channel>
</rss>