蝈蝈俊.net

-- 用随笔来记录自己的技术感触
随笔 - 674, 评论 - 4465, 引用 - 276

导航

关于

记录自己的技术心得

标签

每月存档

最新留言

  • purchase corticyn trimplex
    How are you? and http://famvir2.socialgo.com buy famvir and http://copegus2.socialgo.com generic cop...
    by purchase corticyn trimplex(匿名) on 2010/3/22 20:47:29
  • lynne allegra
    How are you? and <a href="http://actonel2.mypublicsquare.com">actone...
    by lynne allegra(匿名) on 2010/3/22 20:28:44
  • allegra credit
    Howdy, and <a href="http://altace2.mypublicsquare.com">altace palpat...
    by allegra credit(匿名) on 2010/3/22 20:09:43
  • cheap caverta
    Howdy, and <a href="http://ephedraxin2.socialgo.com">ephedraxin&...
    by cheap caverta(匿名) on 2010/3/22 19:50:52
  • Mqxyssaf
    this post is fantastic <a href=" http://www.wikio.com/user/cypeydyl/bio "&a...
    by Mqxyssaf(匿名) on 2010/3/22 19:39:58
  • Qtqvzjnu
    I'm happy very good site <a href=" http://www.wikio.com/user/cypeydyl/bio "...
    by Qtqvzjnu(匿名) on 2010/3/22 19:39:45
  • Fswkouex
    Cool site goodluck :) <a href=" http://www.wikio.com/user/heraojoses/bio "&...
    by Fswkouex(匿名) on 2010/3/22 19:39:40
  • flexisyn online
    Hi! and <a href="http://flonase2.socialgo.com">cheap flonase<...
    by flexisyn online(匿名) on 2010/3/22 19:31:34
  • Mndbtsvp
    Very Good Site <a href=" http://www.wikio.com/user/yqeudanyse/bio ">...
    by Mndbtsvp(匿名) on 2010/3/22 18:51:34
  • Dbgroury
    very best job <a href=" http://www.wikio.com/user/asoqarasinu/bio ">...
    by Dbgroury(匿名) on 2010/3/22 18:51:31

广告

【第1页/共3页,29条】
首页
前页
1

ADO.net 中数据库连接方式


在MSDN中,.net的数据库连接字符串都有详细的说明,我这里以代码范例的方式罗列一些,具体的每一项代表的意义可以参看MSDN.
 
ADO.net 中数据库连接方式(微软提供)

微软提供了以下四种数据库连接方式:
System.Data.OleDb.OleDbConnection
System.Data.SqlClient.SqlConnection
System.Data.Odbc.OdbcConnection
System.Data.OracleClient.OracleConnection
下面我们以范例的方式,来依次说明:

System.Data.SqlClient.SqlConnection
常用的一些连接字符串(C#代码):

SqlConnection conn
= new SqlConnection( "Server=(local);Integrated Security=SSPI;database=Pubs");

SqlConnection conn
= new SqlConnection("server=(local)\\NetSDK;database=pubs;Integrated Security=SSPI");

SqlConnection conn = new SqlConnection(
"Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");

SqlConnection conn = new SqlConnection(
" data source=(local);initial catalog=xr;integrated security=SSPI;
persist security info=False;workstation id=XURUI;packet size=4096; ");

SqlConnection myConn  = new
System.Data.SqlClient.SqlConnection("Persist Security Info=False;Integrated
Security=SSPI;database=northwind;server=mySQLServer");

SqlConnection conn = new SqlConnection(
" uid=sa;pwd=passwords;initial catalog=pubs;data source=127.0.0.1;Connect Timeout=900");

更多字符串连接说明请看MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlConnectionClassConnectionStringTopic.asp

System.Data.OleDb.OleDbConnection
常用的一些连接字符串(C#代码):

OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyWeb\81\05\GrocerToGo.mdb");

OleDbConnection conn = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;Password=;
User ID=Admin;Data Source=grocertogo.mdb;");

OleDbConnection conn = new OleDbConnection(
"Provider=MSDAORA; Data Source=ORACLE8i7;Persist Security Info=False;Integrated Security=yes");

OleDbConnection conn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\bin\LocalAccess40.mdb");

OleDbConnection conn = new OleDbConnection(
"Provider=SQLOLEDB;Data Source=MySQLServer;Integrated Security=SSPI");

更多字符串连接说明请看MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbConnectionClassConnectionStringTopic.asp?frame=true


System.Data.OracleClient.OracleConnection
常用的一些连接字符串(C#代码):


OracleConnection myConn = new System.Data.OracleClient.OracleConnection(
"Data Source=Oracle8i;Integrated Security=yes");

 

更多字符串连接说明请看MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOracleClientOracleConnectionClassConnectionStringTopic.asp?frame=true


System.Data.Odbc.OdbcConnection
常用的一些连接字符串(C#代码):


OdbcConnection conn = new OdbcConnection(
"Driver={SQL Server};Server=MyServer;Trusted_Connection=yes;Database=Northwind;");

OdbcConnection conn = new OdbcConnection(
"Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;
Persist Security Info=False;Trusted_Connection=yes");

OdbcConnection conn = new OdbcConnection(
"Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\bin\nwind.mdb");

OdbcConnection conn = new OdbcConnection(
"Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\bin\book1.xls");


OdbcConnection conn = new OdbcConnection(
"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\bin");

OdbcConnection conn = new OdbcConnection("DSN=dsnname");

更多字符串连接说明请看MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOdbcOdbcConnectionClassConnectionStringTopic.asp?frame=true


其他厂商提供的数据库连接:

DB2Connection myConn = new IBM.Data.DB2.DB2Connection(
"DATABASE = SAMPLE;UID=; PWD=;");

DB2Connection myConn = new IBM.Data.DB2.DB2Connection("DATABASE = SAMPLE");


BdpConnection myConn = new Borland.Data.Provider.BdpConnection("assembly=Borl
and.Data.Mssql,Version=1.1.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;ve
ndorclient=sqloledb.dll;osauthentication=False;database=;usernam
e=;hostname=;password=;provider=MSSQL");

BdpConnection myConn = new Borland.Data.Provider.BdpConnection("assembly=Borl
and.Data.Db2,Version=1.1.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;ve
ndorclient=db2cli.dll;database=;username=;
password=;provider=DB2");


Connection Pooling


在SQL Server、OLE DB和.NET框架结构中的Data Provider中,都提供了隐式的连接池连接支持。你可以在ConnectionString中指定不同的参数值控制连接池的行为。比如下面的例子使OLE DB的连接池无效并自动地进行事务处理:
Provider=SQLOLEDB;OLE DB Services=-4;Data Source=localhost;Integrated Security=SSPI;
在SQL Server.NET Data Provider中提供了以下参数设置控制连接池的行为:Connection Lifttime、Connection Reset、Enlist、Max Pool Size、Min Pool Size和Pooling。

更多数据库连接信息,以及非ADO.net的连接字符串可以参看:
http://www.connectionstrings.com/


 

posted on 2004-02-28 16:15:00 by ghj1976  评论(10) 阅读(7616)

ConnectionStrings


        今天在整理数据库连接字符串的时候发现了一个很好的网站,罗列了所有数据库的连接方式,具体可以看:http://www.connectionstrings.com/  这个网站。

下面罗列一下那里数据库的连接方式分类:

SQL Server 、Access 、Oracle 、MySQL 、Interbase 、IBM DB2 、Sybase 、Informix 、Mimer SQL 、PostgreSQL 、DSN 、Excel 、Text 、DBF / FoxPro 、Visual FoxPro 、Pervasive 、UDL

需要指出的,那里罗列的数据库连接方式不仅仅包含ADO.net 的。不要想当然的都跟ADO.net 套。

我整理的.net下数据库连接范例代码可以参看:
http://www.csdn.net/Develop/read_article.asp?id=24968

posted on 2004-02-28 14:56:00 by ghj1976  评论(6) 阅读(3997)

未能在"设计"视图中打开.在"<%"和"%>"块中,以不同方式将值括起来的解决方案汇总

未能在"设计"视图中打开.在"<%"和"%>"块中,以不同方式将值括起来的解决方案汇总

一些参考资料: http://expert.csdn.net/Expert/topic/2600/2600784.xml

posted on 2004-02-26 12:11:00 by ghj1976  评论(12) 阅读(5367)

存储过程中使用Text类型的输出参数

今天在写一个程序的时候,用到了输出Text类型的的存储过程,但是调试了很久一直不行。在MSDN上查资料,MSDN上有如下信息:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_create_4hk5.asp

OUTPUT

Indicates that the parameter is a return parameter. The value of this option can be returned to EXEC[UTE]. Use OUTPUT parameters to return information to the calling procedure. Text, ntext, and image parameters can be used as OUTPUT parameters. An output parameter using the OUTPUT keyword can be a cursor placeholder.

后来在Google上查资料,同时咨询了很多人后,发现MSDN这个描述应该值得商量。理由如下:Text 类型是可以作为 OutPut 参数,但是没法给他赋值。一但赋值就会报错,等于OutPut一点用也没有。


比如下面不带赋值操作的存储过程,创建就没有问题。

create proc p_test @o text=null
out as
go

exec p_test
go

drop proc p_test

但是一旦其中有了赋值操作,问题就来了。比如如下的存储过程:

create proc p_test @o text=null
out as
select @o = 'x'
go

创建的时候就会报以下错误:

Server: Msg 409, Level 16, State 1, Procedure p_test, Line 3
The assignment operator operation cannot take a text data type as an argument.

 

Google 上与此有关的一些讨论:
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=e%23BC093DBHA.1828%40tkmsftngp05&rnum=2&prev=/groups%3Fq%3DText,%2Bntext,%2Band%2Bimage%2Bparameters%2Bcan%2Bbe%2Bused%2Bas%2BOUTPUT%2Bparameters%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26selm%3De%2523BC093DBHA.1828%2540tkmsftngp05%26rnum%3D2

http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&q=Text%2C+ntext%2C+and+image+parameters+can+be+used+as+OUTPUT+parameters&btnG=Google+Search

要读取Text类型变量的方法有很多,下面就罗列一些:

sqlserver不允许将BLOBs大数据类型赋值给本地变量,只能得到相应的指针,然后根据指针读取相关信息。

一般的做法都是使用SqlDataReader,详情请参考
http://www.microsoft.com/china/msdn/adonet.asp

如果您不想使用SqlDataReader,还是使用SqlHelper.ExecuteNonQuery,可以通过先取出数据的指针,然后根据指针再将数据读出来。详情请参考
【Conserving Resources When Writing BLOB Values to SQL Server】
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconconservingresourceswhenwritingblobvaluestosqlserver.asp

另外 IMAGE 作为输出参数就没有问题,比如下面的存储过程:

CREATE Procedure OutputCoverByISBN
(@ISBNWanted VarChar(20),
  @CoverOut IMAGE OUTPUT)

as
SELECT @CoverOut=COVER FROM Covers WHERE ISBN = @ISBNWanted
SELECT ISBN, Version, FileName, @CoverOut Cover FROM Covers WHERE ISBN =
@ISBNWanted

GO

posted on 2004-02-25 17:05:00 by ghj1976  评论(5) 阅读(5009)

SQL 注入露洞相关知识整理

        上上个星期,有人反馈,CSDN有SQL注入露洞,汗颜,几年前为SQL注入露洞,部门专门对所有代码做过一次非常大的检查,竟然那次检查还有遗漏的地方。最近这几个星期,就是一直再对代码做再次复查,看有没有SQL注入露洞。

        存在SQL注入露洞,就因为你的SQL语句是自己拼凑的,在拼凑的时候,没有考虑用户可能拼凑进有问题的语句造成的。

        之前我们采去的避免措施是,对接受的参数的校验进行封装,所有参数的获得,都必须通过这个封装的函数来获得。但是实际开发中,总有些地方,有些代码没有调用这个封装的函数来进行校验。

        上周末,公司内部讨论会的时候,决定换种思路。从避免自己拼凑SQL语句的方式来实现,具体就是开发规范中有一条,不允许用拼凑的SQL语句,要传参数,就用SqlParameter。比如下面的代码是不允许的。

string strSQL = "select UserID,UserName,Email from User where UserName = '"+aa.replace("'","''")+"'";
SqlDataReader sdr = SqlHelper.ExecuteReader(strConnStr,CommandType.Text,strSQL)

而下面的代码是允许的:

SqlParameter[] parm1 = new SqlParameter[]{
 new SqlParameter("@UserName",SqlDbType.NVarChar,50)
 };
parm1[0].Value = strUserName;
string strSQL = "select UserID,UserName,Email from user where UserName = @UserName ";
SqlDataReader sdr = SqlHelper.ExecuteReader(strConnStr,CommandType.Text,strSQL,parm1)

原因:SqlParameter 会自动处理参数的校验,就类似使用存储过程是不会出现SQL注入露洞的问题一样。


一些SQL注入有关的知识点:
如何SQL注入:
http://www.54nb.com/Read.Asp?ID=1451672&Type=71
SQL注入中有用的几个SQL语句
[N] = 第N個表
ID=1 and (Select top 1 name from(Select top [N] id,name from sysobjects where xtype=char(85)) T order by id desc)>1
[T] = 表名
[N] = 第N個字段
ID=1 and (Select Top 1 col_name(object_id('[T]'),[N]) from sysobjects)>1
SQL注入表名和字段名的获得
http://www.54nb.com/Read.Asp?ID=1451672&Type=71

posted on 2004-02-24 16:59:00 by ghj1976  评论(15) 阅读(5099)

200401 CSDN 微软社区专家榜(只汇总了微软技术相关的得分)

微软从2004年开始,开始接受MVP成为社区之星,并将其作为连任MVP的一个参考标准。现在的MVP努力呀。
得分 CSDN帐号
昵称
18080 zjcxc 邹建
10034 acewang 平平安安过一年
7774 txlicenhe 马可
6984 xieyj Free Fish
6972 net_lover 孟子E章
6431 bluebohe 薄荷_MVP
6245 rainstormmaster 暴风雨 v2.0
5159 sungod8 琤) (Heros Ⅲ 凤凰
4699 zhiqiu
4508 zhangcrony 为了不再郁闷地生活﹐我不得不郁闷地工作
3988 online 龙卷风V2.0--再战江湖
3845 SoHo_Andy
3735 fzd999 花差花差
3044 icuc88 蠢,就是一个字
3015 TrueAndFalse 彩旗飘飘
3004 ross33123
2985 saucer 思归
2639 gmlxf 烛光
2557 MSTOP 陈建华(东莞立晨企业资讯服务有限公司)
2502 i33333 莫名未名:健康、平安、快乐、进步、成功
2445 yeefly Web开发版
2409 redbb ....Dotneter....
2380 Sunmast 速马
2349 Jianli2004 健力)(永远的一星
2243 yintongshun 踏雪有痕
2186 webdiyer 陕北吴旗娃
2124 j9988 j9988
1996 gOODiDEA 无语
1990 alexzhang00 三角猫(sjcatsoft)
1960 jiangsheng 蒋晟.MSMVP2004Jan
1929 flyelf 空谷清音
1922 wangier 冷眉
1911 3661512 .Net
1858 zhucde 【风间苍月】)(MVP
1831 TechnoFantasy 冰儿马甲www.applevb.com
1830 wangweixing2000
1811 blow_jj 阿俊
1788 solidpanther ╃╄╃我爱机器猫╄╃╄
1778 izzard izzard
1743 checkyvc6 我在申请小版主请到vc界面版投我一票谢
1725 changechange ( access911 & cg1 )
1698 yoki 小马哥--鬓微霜,又何妨
1685 titilima 李马
1665 victor_cui 夕阳
1656 osborn SEANX
1636 mikespook Mike大懒猫
1630 haiwangstar 八月桂花香
1583 yjgx007 谁是高手
1556 kevinliuu @_@
1548 awnucel 西大耻犹未雪,南京恨何时灭&抵制日货

posted on 2004-02-24 14:32:00 by ghj1976  评论(16) 阅读(2033)

用简单的道理说明复杂问题

今天有人向我推荐一篇文章, http://www.csdn.net/develop/article/24/24397.shtm

《介绍 IOC》

IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。

先不考虑技术,这篇文章的写作方式就很值得自己学习,自己以前文章不是流水帐,就是苦涩的概念。自己写的文章很少看到这样的深入浅出的介绍道理。自己深感汗颜 跟羡慕icecloud 的文笔。

另外从技术角度来说,以上的Inversion of Control(控制反转)也同样适用于.net。很值得一看。

posted on 2004-02-24 09:58:00 by ghj1976  评论(14) 阅读(3593)

几个版本的猴子和香蕉的故事

        在北京开发配置研讨会的时候,听郑子颖用猴子跟香蕉的故事讲开发中软件工程的问题。最近我也在公司整理讲座PPT文档,准备使用这个故事,我到网上找这个故事,结果发现很多版本,由于版本很多,我把它整理到文章里面了。具体看以下地址

http://blog.joycode.com/ghj/posts/13326.aspx

下面摘抄其中一个版本:

  -道德的起源-
  
  把五只猴子关在一个笼子里,上头有一串香蕉实验人员装了一个自动装置
  一旦侦测到有猴子要去拿香蕉,马上就会有水喷向笼子而这五只猴子都会一身湿
  首先有只猴子想去拿香蕉,当然,结果就是每只猴子都淋湿了
  之後每只猴子在几次的尝试後,发现莫不如此
  於是猴子们达到一个共识:不要去拿香蕉,以避免被水喷到
  後来实验人员把其中的一只猴子释放,换进去一只新猴子A
  这只猴子A看到香蕉,马上想要去拿
  结果,被其他四只猴子海K了一顿
  因为其他四只猴子认为猴子A会害他们被水淋到,所以制止他去拿香蕉A尝试了几次,虽被打的满头包,依然没有拿到香蕉
  当然,这五只猴子就没有被水喷到
  後来实验人员再把一只旧猴子释放,换上另外一只新猴子B
  这猴子B看到香蕉,也是迫不及待要去拿
  当然,一如刚才所发生的情形,其他四只猴子海K了B一顿
  特别的是,那只A猴子打的特别用力(这叫老兵欺负新兵,或是媳妇熬成婆 ^O^)
  B猴子试了几次总是被打的很惨,只好作罢
  後来慢慢的一只一只的,所有的旧猴子都换成新猴子了,大家都不敢去动那香蕉
  但是他们都不知道为什麽,只知道去动香蕉会被猴扁
  这就是道德的起源

更多请看:http://blog.joycode.com/ghj/posts/13326.aspx

posted on 2004-02-19 10:50:00 by ghj1976  评论(3) 阅读(2373)

几个版本的猴子和香蕉的故事


  -道德的起源-
  
  把五只猴子关在一个笼子里,上头有一串香蕉实验人员装了一个自动装置
  一旦侦测到有猴子要去拿香蕉,马上就会有水喷向笼子而这五只猴子都会一身湿
  首先有只猴子想去拿香蕉,当然,结果就是每只猴子都淋湿了
  之後每只猴子在几次的尝试後,发现莫不如此
  於是猴子们达到一个共识:不要去拿香蕉,以避免被水喷到
  後来实验人员把其中的一只猴子释放,换进去一只新猴子A
  这只猴子A看到香蕉,马上想要去拿
  结果,被其他四只猴子海K了一顿
  因为其他四只猴子认为猴子A会害他们被水淋到,所以制止他去拿香蕉A尝试了几次,虽被打的满头包,依然没有拿到香蕉
  当然,这五只猴子就没有被水喷到
  後来实验人员再把一只旧猴子释放,换上另外一只新猴子B
  这猴子B看到香蕉,也是迫不及待要去拿
  当然,一如刚才所发生的情形,其他四只猴子海K了B一顿
  特别的是,那只A猴子打的特别用力(这叫老兵欺负新兵,或是媳妇熬成婆 ^O^)
  B猴子试了几次总是被打的很惨,只好作罢
  後来慢慢的一只一只的,所有的旧猴子都换成新猴子了,大家都不敢去动那香蕉
  但是他们都不知道为什麽,只知道去动香蕉会被猴扁
  这就是道德的起源
  
  -阶级的起源-
  
  实验人员继续他们的实验,不过这一次他们改变了喷水装置
  一旦侦测到有猴子要去拿香蕉,马上就会有水喷向拿香蕉的猴子,而不是全体
  然后实验人员又把其中的一只猴子释放,换进去一只新猴子C
  不同以往的是猴子C特别的孔武有力
  当然猴子C看到香蕉,也马上想要去拿
  一如以前所发生的情形,其他四只猴子也想海K猴子C一顿
  不过他们错误估计了C的实力,所以结果是反被C海K了一顿
  于是猴子C拿到了香蕉,当然也被淋了个透湿
  C一边打着喷嚏一边吃着香蕉,美味但是也美中不足
  A、B、D、E没有香蕉吃却也比较快乐,毕竟没有被淋到嘛
  后来C发现只有拿香蕉的那个才会被淋到,他就要最弱小的A替他去拿
  A不想被K,只好每天拿香蕉然后被水淋
  B、D、E越发的快乐了起来,这就叫比上不足,比下有余嘛 笑脸
  于是五只猴子有了三个阶级
  这下子阶级也随着道德的起源了
  
  -道德的沦丧-
  
  天变热了,笼子里的猴子们想冲凉却找不到地方。终于出现了一位反潮流英雄,猴子HERO。HERO在无意中碰到了香蕉,理所当然的引来了一顿饱打。但在挨打的过程中,猴子们享受到了冲凉的乐趣。等身上的水干了之后,猴子A在无意中碰撞了HERO,使HERO又一次接触到了香蕉,于是,猴子们享受了第二次冲凉,HERO遭到了第二次痛殴。
  
  在此之后,只要大家有冲凉的需要,就会有一只猴子X挺身而出,对HERO进行合理冲撞。
  大家对HERO的态度也有了明显的不同,在平时大家会对HERO异常温和,以弥补在冲凉时维护规则而不得不对它进行的暴力举动。
  
  一天,在大家冲凉时,饱受折磨的HERO闻到了香蕉的清香,生物本能使它在别的猴子心有旁鹜时将香蕉吃了。而且此后没有了新的香蕉来填补空缺。猴子们陷入了另一个尴尬境地:没有冲凉的水,也没 有香蕉,只有HERO。
  
  于是,另一个规则形成了。猴子在烦躁的时候会痛打HERO出气,HERO不得反抗。

  当笼子里的旧猴子被新猴子换掉时,新猴子会在最快的时间内学会殴打HERO。
  
  终于有一天,老天有眼,历尽沧桑的HERO被另一只猴子代替了。猴子们失去了发泄的对象,只能任意选取一个目标进行攻击。从此以后,笼子里的猴子们不吃不喝不冲凉,唯一的举动就是打架。
  
  这就是道德的沦丧。
  
  -道德的重建-
  
  实验人员对猴子们的争斗不休感到不安。为了重建道德秩序,他们决定继续供应香蕉。

  一天,正在混战的猴子们发现头顶多了一串香蕉,它们其中的一个A不顾身上的剧痛,把香蕉摘了下来。于是久违的甘露出现了,未曾尝过甜头的猴子们先是茫然失措,继而争先恐后的加入冲凉的行列。香蕉反而被遗忘了。当猴子B、C、D、E发现A在享受淋浴的同时还吃着美味的香蕉,嫉妒心使它们暂时团结起来,共同K了A一顿,将A吃剩的香蕉夺过来,但是,此刻的香蕉成了匹夫怀里的宝玉,得到它的猴子虽然可以享受美味,但付出的代价也是巨大的。
  
  实验人员不断放入香蕉,却发现战斗比以前更激烈了。分析清楚原因后,他们用木头做了一个假香蕉扔进了笼子。此时猴子们已经学聪明了,它们知道触摸香蕉可以享淋浴, 而试图独占香蕉则会遭到痛扁。于是,一个新的现象出现了,当猴子们有冲凉的需要时,会有一只猴子将香蕉拿起来,而当它发现有遭到攻击的可能时,它会马上放下香蕉逃到一边去。这样,猴子们都能冲凉,但是又不至于再象以前那样N败俱伤。
  
  没有猴子发现那个香蕉是假的。
  
  -信仰的起源-
  
  五只猴子A、B、C、D、E三个阶级快乐地生活了很久
  他们精确的给出了三个阶级的定义,即吃香阶级、拿香阶级和干看着阶级
  可惜猴子A由于长期的水中作业无可避免地引发了它肺部功能的衰竭
  一天他在例行的拿香蕉作业中跌倒了就再也没有爬起来
  于是实验人员又送进了一只同样孔武有力的猴F
  当然他还是对屋顶的香蕉很有兴趣
  不幸的是他最终以微弱的劣势被以C为首的群猴再次海K
  第二天,又到了拿香蕉的时候
  猴子C很无所谓,反正他还要吃香蕉,反正他不会被水淋到
  真正恐慌的是B、D、E三猴
  F是那么的健壮,他们这些媳妇是熬不成婆了 悲伤的脸
  他们将面临一个艰难的抉择,谁该去步A的后尘?
  猴子B、D、E展开了激烈的争论,讨论谁最应该做下一个拿香阶级
  猴子F很奇怪也很好奇,什么叫“拿香阶级”呢?
  猴子B、D、E解释道:所谓“拿香阶级”就是猴子界勇敢者的阶级
  需具备一不怕苦二不怕死的大无畏精神方能得此殊荣
  猴子F闻听不禁有些神往,有些跃跃欲试
  当然他最终达到了目的,作了唯一的拿香阶级
  再后来,B、D、E三猴陆续被换出局,换来的猴子个个健壮如C
  他们继续大大出手,不过目标不是香蕉,而是那个唯一的拿香阶级
  
  于是信仰也出现了
  
  -迷信的起源-
  
  迷信的起源
  
  后来A终于被好心的实验人员拉出了苦海。
  
  新来了猴子F
  
  C觉得有必要维护自己的阶级地位,B、D、E则生怕自己顶了A的缸…… 在各种复杂心情的作用下,B、D、E在C的带领下爆扁了F一顿,然后强令F做拿香蕉阶级。
  
  F开始不乐意,后来慢慢在B等的劝说下等“待多年的媳妇熬成婆”这一宿命。
  
  慢慢的老资格的B、D、E猴子渐渐被淘汰,C发现自己在体力上不再占有优势,很难再通过武力让这一游戏规则继续下去,觉得十分苦恼。
  
  这时,一只最有希望升级为吃香蕉阶级(暨C的理所当然接班人)也是C谋臣的H向C进言。于是君臣定计。
  
  H开始依靠自己多懂几种猴语而在其他若干猴面前树立的权威形象向其他猴鼓吹:“每一只新来笼子的猴子都是有罪的,这种罪责来自血统。……只有摘香蕉的猴子才能被(实验人员)送到天堂。”
  
  事实上,因为被水冲很容易得肺炎病倒而被实验人员淘汰掉,猴子们不知道反而以为被淘汰的猴子真的进了天堂。
  
  渐渐,猴子都相信了这套理论,并且讲给每一只新猴子听。

  然后就这么流传下去越传越神奇。以至于后来摘香蕉阶级的猴子都为了能摘香蕉而大打出手。……
  
  这些都是C没有想到,H没有看到的,那时他们都已经死了。

  然而迷信就这么诞生了。

posted on 2004-02-19 10:26:00 by ghj1976  评论(13) 阅读(4597)

使用ASPNET帐号发送Email的权限问题

       上个星期六的时候(2月14日,情人节),来公司加班,把DearBook的程序从一台服务器搬到另外的两台服务器,在重新配置程序的时候,发现我写的发送email的函数,在服务进程里面调用没有问题,在ASP.net页面调用就有问题,为了这个问题,查了一下午,都没有解决,后来把发送Email的那部分,全部部署到服务程序里面。才算完成痛苦的情人节加班。

       对这个问题的原因一直怀疑是ASPNet帐户没有权限造成的,在网上找了不少资料,但是网上提供的方案,大多是给了ASP.net更多的权限,我不想给ASP.net更多的权限,就去动力营问微软技术工程师。以下是我整理自网上以及微软动力营的解决方案。

错误表现:Could Not Access CDO.Message Error
 
The transport lost its connection to the server.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
 
Exception Details: System.Runtime.InteropServices.COMException: The transport lost its connection to the server.

[HttpException (0x80004005): Could not access 'CDO.Message' object.]

原因:ASPNet用户没有对CDO.Message 的访问权限。


解决方案:

方案一:
try the steps below to grant the ASPNET the property permission.
1. Start -> Control Panel -> Administrative Tools -> Component Services.
2. Look for the desired COM component and add the ASPNET'user to the roles.
这种方案需要Com组件是进程外的组件,CDO组件是进程内的组件,因此无法使用。

方案二:

you can launch the aspnet_wp.exe with an account which has enough permission. Please try these steps:

1.    Find machine.config (usually under directory>\Microsoft.NET\Framework\v1.0.3705\CONFIG) and edit the
section. Change the "userName" attribute value to "SYSTEM".

2.    Edit the "web.config" file in the ASP .NET project. Add the following
line:
password=password> />

The user name you provide here need to have the permission to call the CDO
component.

3.    Restart the aspnet_wp.exe. You can also kill it in Task Manager. Then
aspnet_wp will start using SYSTEM account.

You also can impersonate ASPNET as a user having permission. For more
information about ASP.NET Impersonation please see:

http://msdn.microsoft.com/library/en-us/cpguide/html/cpconaspnetimpersonation.asp

http://support.microsoft.com/default.aspx?scid=KB;en-us;306158

这个方案给了ASPNet帐户较大的权限。

以上两个资料参考来源:

http://groups.google.com/groups?q=CDO.Message+SmtpMail.Send(&hl=zh-CN&lr=&ie=UTF-8&oe=UTF-8&selm=aLZQAD45CHA.1536%40cpmsftngxa08.phx.gbl&rnum=3

方案三:

CDO组件是进程内的组件,因此要建立进程内的组建,只需要NTFS权限和对注册表的访问。无需对组建服务进行配置。

您可以尝试按如下步骤操作:

1。给ASPNET 账户访问HKCR/TypeLib/{cdo clsid} (Microsoft CDO for Windows 2000-CDOSYS)的权限,这样ASPNET 账户就可以调用CREATEOBJECT ("CDO.Message")
(cdo clsid可以从HKCR/CLSID下获得)

2。 给ASPNET账户添加如下权限:
给如下目录添加NTFS文件权限:C:\Inetpub\mailroot\pickup folder


您可以参考如下文章:
XIMS: Minimum NTFS Permissions Required to Use CDONTS
http://support.microsoft.com/?id=260985

这个方案给了ASPNet帐户够用的权限。

posted on 2004-02-17 11:25:00 by ghj1976  评论(30) 阅读(23252)

【第1页/共3页,29条】
首页
前页
1

Powered by: Joycode.MVC引擎 0.5.2.0