Posts Tagged ‘asp’

ASP 链接 Access 客户端的工作过多的错误解决

星期五, 10月 9th, 2009

朋友的 windows2003+IIS 服务器出了问题。所有静态页工作正常,asp+access页面都响应超时,并且出现提示“客户端的工作过多”的80004005错误。

首先排除了代码的问题,IIS也一切正常。接着看了一下IIS日志,多数网站的流量很小,看不出来异常。这时发现HTTPERR没有关闭,随便打开一页,好家伙,全都是某个静态网站下级目录bbs/中的asp程序产生的错误记录,路径大概是bbs/add.asp?keyword=……,而且错误发生概率极高,每秒几条。问题很明显了,是利用程序漏洞的数据库注入。这个网站恰恰主站是静态页,只有这么一个留言程序,所以之前没有注意到,而问题恰恰就发生在这里。去网站目录里看,access已经达到1G了,正常来讲,access一旦超过百兆,就已经承受不了了,可想而知1G的数据库链接导致服务器的ODBC发生错误,是必然的结果。

问题找到了,解决办法也很简单,只要将错误路径改名,断开注入入口,服务器就恢复正常了。

微软和php合作的展望和预测

星期五, 11月 2nd, 2007

转自 citywill.net

微软和Zend的合作由来已久,最近开始发力炒作,估计才通过了最后关头,板上钉钉了.

Windows服务器在2000以前主推ASP,后来推出的ASP.net.asp擅长快速开发,.net主力在企业级应用.因此微软将.net作为asp的替代产品,本身就是决策失误――从此微软没有了轻量级web开发,在和Linux系列平台的竞争上,渐渐走向劣势.

目前web开发平台的局面是,windows和linux领导两大阵营,windows企业级开发工具有成熟强大的.net,足以和Java抗衡.轻量级的老大PHP虽然也可以在windows上使用,但是由于性能等方面问题,一直严重向linux倾斜.好在Linux平台上的各类产品是松散运作的,短期内还不能对微软造成太大威胁.微软想要打压对手,就必须重新拾起轻量级这块市场.然而被埋没多年的asp已经时过境迁,虽然还有一些用户,但在大家印象中已经是被.net取代的没落产品,开发者也越来越少,根本无法担负重任了.而重新开发新产品费时费力,不如招安脚踏两只船的php,让天平向windows倾斜一些,如果能够达到平衡,微软就应该心满意足了.

总之,我认为微软对php的政策应该不是偶然的,而是长期的,一旦通过了技术和管理瓶颈,就应该一片光明.我做一个大胆猜测,未来某个版本的VS产品中,将出现php开发的工具;Zend说不定会被收购;PHP将在微软的支持下继续开源,但不能阻止微软对php进行手术,php.net将融入到微软的.net战略.这场交易在开源和商业之间进行,两者将不再斗争,而是互利互赢.

asp程序编写标准

星期四, 7月 27th, 2006

asp程序对面向对象支持的不好,而且代码混杂重用率低为许多程序员所不耻。但是必须用asp怎么办?看看好的大型asp程序是怎么做的也许会受到启发。下面是我现在做的一个网络教学程序。框架是这样做的:

  1. <!–#include file="../include/config.asp" –>
  2. <!–#include file="config.asp" –>
  3. <%
  4. ‘页程序块
  5. title_subhead="副标题"
  6. title_page="页面标题"
  7. title_cont=""
  8. title_ie=title_cont&title_page&title_subhead&title
  9. ‘config_Login("s")
  10. ‘浏览权限:s为学生浏览 t为教师浏览 如果没有限制去掉改行
  11.  
  12. ’str_info = Trim(Request.QueryString("str_info"))
  13. ‘警告和提示
  14. ‘action = Trim(Request.QueryString("action"))
  15. ‘命令
  16.  
  17. %>
  18. <!–#include file="../include/header.asp" –>
  19. <!–页面内容开始 –>
  20. <div class="str_info"><%= str_info %></div>
  21. <!–页面内容结束 –>
  22. <!–#include file="../include/footer.asp" –>

先说说结构:

  • ../include/config.asp:相当于asp.net中的web.config,全局变量、函数、过程(包括数据库连接)都放到里面
  • config.asp:相当于asp.net子目录下的web.config,对当前目录的设置。比如每个目录的二级菜单不同,那么就在config里面分别设置二级菜单的变量。
  • <%’页程序块%>:把本页的asp程序写在一起,尽量做到程序和页面内容分开。当然不可避免的要在内容中嵌入变量或者函数,就相当于asp.net的自定义控件了。
  • ../include/header.asp:也许看不到这个页面里的东西你不会觉得妙,但是我可以形容一下,里面有html代码的定义和head、body标签,还有网页的logo、menu等信息。当然如果有登录状态或者是二级菜单的化也要放到里面。总之,在网页上面公用的部分都在这个页里。
  • 网页内容:里面就是html代码了,每页不同的部分都在这里。
  • ../include/footer.asp:这里主要包含copyright之类的东西。

然后举例简单说明怎么用(基本上就算掏底了):

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <title><%= title_ie %></title>
  6. <%= link_feed %>
  7. <link href="../style/web.css" rel="stylesheet" type="text/css" />
  8. </head>
  9. <body>
  10. <div id="header">
  11.     <div id="state"><% config_loginState %></div>
  12.     <div id="anav"><% =config_anav %></div>
  13.     <h1><%= title %></h1>
  14.     <div id="subhead"><%= title_subhead %></div>
  15.     <div id="menu"><% =config_menu %></div>
  16.     <div id="nav"><% =config_nav %></div>
  17. </div>
  18. <div id="main">
  19.     <div class="left">
  20.     <h2><%= title_page %></h2>

这是header里面的全部代码,里面所有的asp部分都是变量或者函数。大多数在各级config里面设置,少数比如title在config设置后,可能还需要在每页写个脚本,追加一部分。比如config里面已经设置了title=”citywill.net”,在某一页的程序块中可以这样追加title=”我这样编写asp - “&title

这就是本人的做法,并且认为这样做比较高效。当然在实践的过程中这个办法要不断的改善。欢迎大家批评。

2006年7月18日8:41:40 修改