﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-I believe I can fly, I can touch the sky!</title><link>http://www.cnblogs.com/laixiaoyu/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 26 Jul 2008 07:56:19 GMT</lastBuildDate><pubDate>Sat, 26 Jul 2008 07:56:19 GMT</pubDate><ttl>60</ttl><item><title>总是要搞点动静出来的，来吧，都来吧，不安分子也！  </title><link>http://www.cnblogs.com/laixiaoyu/archive/2008/07/22/1248331.html</link><dc:creator>赖小羽</dc:creator><author>赖小羽</author><pubDate>Tue, 22 Jul 2008 00:45:00 GMT</pubDate><guid>http://www.cnblogs.com/laixiaoyu/archive/2008/07/22/1248331.html</guid><wfw:comment>http://www.cnblogs.com/laixiaoyu/comments/1248331.html</wfw:comment><comments>http://www.cnblogs.com/laixiaoyu/archive/2008/07/22/1248331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/laixiaoyu/comments/commentRss/1248331.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/laixiaoyu/services/trackbacks/1248331.html</trackback:ping><description><![CDATA[<p>我不想把我和你之间的关系搞成博弈，你都不懂&#8230;&#8230; 和她，只是博弈，甚至她是谁我都还不知道，你都没有问清楚，就在那里胡乱伤心，以其你会伤心，不如早早的结束。这些天我面临多个博弈，你都不懂，你以为上周我真那么空闲吗？工作吧。</p>
<p>&nbsp;</p>
<p>商圈如海，习水性者生；职场如局，知内幕者存！</p>
<p>&nbsp;</p>
<p>这些天，面临多个博弈&#8230;&#8230;</p>
<img src ="http://www.cnblogs.com/laixiaoyu/aggbug/1248331.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41316/" target="_blank">[新闻]腾讯CEO马化腾:中国互联网业准备再过冬</a>]]></description></item><item><title>天人合一的思想</title><link>http://www.cnblogs.com/laixiaoyu/archive/2008/07/14/1242697.html</link><dc:creator>赖小羽</dc:creator><author>赖小羽</author><pubDate>Mon, 14 Jul 2008 09:29:00 GMT</pubDate><guid>http://www.cnblogs.com/laixiaoyu/archive/2008/07/14/1242697.html</guid><wfw:comment>http://www.cnblogs.com/laixiaoyu/comments/1242697.html</wfw:comment><comments>http://www.cnblogs.com/laixiaoyu/archive/2008/07/14/1242697.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/laixiaoyu/comments/commentRss/1242697.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/laixiaoyu/services/trackbacks/1242697.html</trackback:ping><description><![CDATA[摘要: 自 《 道 德 经 》 问 世 以 来 ， 人 们 对 其 研 究 探 讨 从 未 间 断 ， 仁 者 见 仁 ， 智 者 见 智 ， 众 说 纷 纭 ， 莫 衷 一 是 。 我 认 为 ， " 天 人 合 一 " 的 思 想 理 念 、 " 道 法 自 然 " 的 处 事 原 则 、 " 无 为 而 治 " 的 行 为 方 式 ， 是 其 思 想 精 髓 ， 值 得 认 真 研 究 ， 深 刻 &nbsp;&nbsp;<a href='http://www.cnblogs.com/laixiaoyu/archive/2008/07/14/1242697.html'>阅读全文</a><img src ="http://www.cnblogs.com/laixiaoyu/aggbug/1242697.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41315/" target="_blank">[新闻]F8 Keynote Speech[多图]</a>]]></description></item><item><title>aspnet_regsql 自定义设置 修改</title><link>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224813.html</link><dc:creator>赖小羽</dc:creator><author>赖小羽</author><pubDate>Wed, 18 Jun 2008 09:13:00 GMT</pubDate><guid>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224813.html</guid><wfw:comment>http://www.cnblogs.com/laixiaoyu/comments/1224813.html</wfw:comment><comments>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224813.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/laixiaoyu/comments/commentRss/1224813.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/laixiaoyu/services/trackbacks/1224813.html</trackback:ping><description><![CDATA[<h2>如何修改Asp.net2.0默认WebSite的LocalSqlServer设置 </h2>
<p>1.假如我们使用Visual studio 2005在http://?上(如<a href="http://localhost/newtest">http://localhost/newtest</a>)创建一个网站(WebSite)项目。</p>
<p>2.假如我们的电脑没有安装SQL Server 2005 Express，只安装了Sql Server 2000。</p>
<p>3.此时如果我们使用菜单【WebSite----Asp.Net Configuration】，随后就会弹出网站管理工具Web页面，在此页面中有四个主题（主页、安全、应用程序、提供程序）。</p>
<p>我们继续点击【安全】主题，就会出现【无法连接到SQL Server数据库】的错误信息，在右下角有一个【选择数据存储区】按钮，意思是建议我们对数据存储区进行选择。</p>
<p>我们点击【选择数据存储区】继续进行设置，新的页面会提示&#8220;应用程序当前被配置为使用提供程序:AspNetSqlProvider&#8221;，下面有两个链接选项，第一个是&#8220;为所有站点管理数据选择同一提供程序&#8221;，第二个是&#8220;为每项功能选择不同的提供程序（高级）&#8221;，我们点击第二个链接继续进行设置。</p>
<p>此后，页面会显示&#8220;成员资格提供程序&#8221;与&#8220;角色提供程序&#8221;的选项供我们进行配选，并且在每个选项后面都有【测试】链接。我们如果对AspNetSqlMembershipProvider和AspNetSqlRoleProvider选项都进行测试操作，一般情况下，测试都不会成功，并且建议我们运行aspnet_regsql命令行实用工具创建和配置数据库。如果我们用aspnet_regsql进行配置，最终并不会成功。</p>
<p><strong>如果以上设置不成功，使用Login等控件几乎会不成功。如何解决问题，现给出本人的应对措施。</strong></p>
<p>&nbsp;</p>
<hr />
<p>&nbsp;</p>
<p>1.用SQL Server的企业管理器，创建一个数据库，如为zyh;</p>
<p>2.用aspnet_regsql（C:\Windows\Microsoft.Net\Framework\v2.0.50215\aspnet_regsql.exe)创建数据库。除在创建向导的第3步数据库下拉框选择&#8220;zyh&#8221;以外，其余各步骤皆使用默认设置。这样，在Sql Server 2000中会创建一个含有用户表和存贮过程的完整数据库。</p>
<p>3.在管理工具中打开IIS，找到虚拟目录newtest，用鼠标右键点击，然后左键点菜单项【属性】、【ASP.NET】标签、【编辑配置】按钮，在【常规】标签的【连接字符串管理器】中，点名称【LocalSqlServer】，点【编辑】按钮，把【连接参数】修改为相应能够连接到数据库zyh的数据库连接字符串，如&#8220;Data Source=.;Initial Catalog=zyh;Persist Security Info=True;User ID=sa;Password=12345&#8221;,此后，一直点【确定】按钮，最后到IIS管理工具界面即可。</p>
<p>4.最后返回网站管理工具Web页面，点击安全主题，就会出现&#8220;使用安全设置向导按部就班地配置安全性。&#8221;链接和其它相关链接。</p>
<img src ="http://www.cnblogs.com/laixiaoyu/aggbug/1224813.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41314/" target="_blank">[新闻]奥运核心资源被分食 搜狐央视网谁忽悠谁？</a>]]></description></item><item><title>Asp.net 2.0 Webpart 数据库的迁移  aspnet_regsql.exe Access</title><link>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224771.html</link><dc:creator>赖小羽</dc:creator><author>赖小羽</author><pubDate>Wed, 18 Jun 2008 08:34:00 GMT</pubDate><guid>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224771.html</guid><wfw:comment>http://www.cnblogs.com/laixiaoyu/comments/1224771.html</wfw:comment><comments>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224771.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/laixiaoyu/comments/commentRss/1224771.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/laixiaoyu/services/trackbacks/1224771.html</trackback:ping><description><![CDATA[<div><a id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/tongzhenhua/archive/2007/02/06/642327.html">Asp.net 2.0 Webpart 数据库的迁移</a> </div>
<p style="margin: 0cm 0cm 0pt; text-align: center" align="center"><span style="font-family: 宋体">作者：童振华</span>&nbsp; （转载请注时作者）</p>
<p style="margin: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Webpart<span style="font-family: 宋体">是</span>asp.net 2.0<span style="font-family: 宋体">中一项非常出色的功能，但是非常遗憾的是，默认是使用</span>sql express 2005<span style="font-family: 宋体">作为后台数据库。而且很多初学者在本机写完程序迁移到服务器上以后才如梦初醒，原来还要后台数据库的，甚至</span>WROX<span style="font-family: 宋体">出的《</span>Professional ASP.NET 2.0<span style="font-family: 宋体">》在讲</span>webpart<span style="font-family: 宋体">这节时都不曾提及后台数据库的事，真是让人失望之极（起码我没看到）。而目前主流的网站都是用</span>MS SQLServer 2000<span style="font-family: 宋体">或是</span>Access<span style="font-family: 宋体">作为数据库，如何才能把</span>Webpart<span style="font-family: 宋体">的数据库从</span>SQL Express 2005<span style="font-family: 宋体">迁移到</span>SQLServer 2000<span style="font-family: 宋体">和</span>Access<span style="font-family: 宋体">呢？</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: center" align="center"><strong><span style="font-family: 宋体">迁移到</span>SQLServer 2000</strong></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">微软提供了一个数据库配置程序，可以方便的在</span>SQLServer2000<span style="font-family: 宋体">和</span>SQLServer2005<span style="font-family: 宋体">上进行</span>webpart<span style="font-family: 宋体">的数据库配置</span> <span style="font-family: 宋体">。</span></p>
<p style="margin: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.<span style="font-family: 宋体">首先运行</span>SQLServer</p>
<p style="margin: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.<span style="font-family: 宋体">然后运行</span>C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727"aspnet_regsql.exe <span style="font-family: 宋体">会出现一个图形化的操作界面，根据提示便可自动生成一个名为</span>aspnetdb<span style="font-family: 宋体">的库。</span></p>
<p style="margin: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.<span style="font-family: 宋体">打开</span>vs.net 2005<span style="font-family: 宋体">，新建一个网站，往页面上拖一个</span>webpartmanager,<span style="font-family: 宋体">运行一下</span>,<span style="font-family: 宋体">出错。因为你还没有配</span>web.config<span style="font-family: 宋体">呀，而且</span>vs.net2005<span style="font-family: 宋体">与</span>vs.net2003<span style="font-family: 宋体">有所不同，默认是没有</span>web.config<span style="font-family: 宋体">文件的</span>,<span style="font-family: 宋体">需要我们自己增加，</span>(<span style="font-family: 宋体">当然你也可以直接修改</span>C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727"CONFIG<span style="font-family: 宋体">下默认的</span>web.config<span style="font-family: 宋体">，但是我不推荐</span>)<span style="font-family: 宋体">。</span></p>
<p style="margin: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.<span style="font-family: 宋体">在新加的</span>web.config<span style="font-family: 宋体">中把</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&lt;</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">connectionStrings</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">/&gt;</span><span style="font-size: 9pt; font-family: 新宋体">一行修改成如下</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&lt;</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">connectionStrings</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp; &lt;</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">remove</span><span style="font-size: 9pt; color: red; font-family: 新宋体">name</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">=</span><span style="font-size: 9pt; font-family: 新宋体">"<span style="color: blue">LocalSqlServer</span>"<span style="color: blue"> /&gt;</span></span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp; &lt;</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">add</span><span style="font-size: 9pt; color: red; font-family: 新宋体">name</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">=</span><span style="font-size: 9pt; font-family: 新宋体">"<span style="color: blue">LocalSqlServer</span>"<span style="color: red">connectionString</span><span style="color: blue">=</span>"<span style="color: blue">Data Source=localhost;Initial Catalog=aspnetdb;Persist Security Info=True;User ID=sa;Password=</span>"</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: red; font-family: 新宋体">providerName</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">=</span><span style="font-size: 9pt; font-family: 新宋体">"<span style="color: blue">System.Data.SqlClient</span>"<span style="color: blue"> /&gt;</span></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&lt;/</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">connectionStrings</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt"><span style="font-family: 宋体">完成后的</span>web.config<span style="font-family: 宋体">为</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&lt;?</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">xml</span><span style="font-size: 9pt; color: red; font-family: 新宋体">version</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">=</span><span style="font-size: 9pt; font-family: 新宋体">"<span style="color: blue">1.0</span>"<span style="color: red">encoding</span><span style="color: blue">=</span>"<span style="color: blue">utf-8</span>"<span style="color: blue">?&gt;</span></span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&lt;!--</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">注意: 除了手动编辑此文件以外，您还可以使用</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp; Web </span><span style="font-size: 9pt; color: green; font-family: 新宋体">管理工具来配置应用程序的设置。可以使用 Visual Studio 中的</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">&#8220;网站&#8221;-&gt;&#8220;Asp.Net 配置&#8221;选项。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp; &nbsp;</span><span style="font-size: 9pt; color: green; font-family: 新宋体">设置和注释的完整列表在</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp; machine.config.comments </span><span style="font-size: 9pt; color: green; font-family: 新宋体">中，该文件通常位于</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp; "Windows"Microsoft.Net"Framework"v2.x"Config </span><span style="font-size: 9pt; color: green; font-family: 新宋体">中</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">--&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&lt;</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">configuration</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp; &lt;</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">appSettings</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">/&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp; &lt;</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">connectionStrings</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">/&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp; &lt;</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">system.web</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">设置 compilation debug="true" 将调试符号插入</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span style="font-size: 9pt; color: green; font-family: 新宋体">已编译的页面中。但由于这会</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">影响性能，因此只在开发过程中将此值</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">设置为 true。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: blue; font-family: 新宋体">--&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">compilation</span><span style="font-size: 9pt; color: red; font-family: 新宋体">debug</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">=</span><span style="font-size: 9pt; font-family: 新宋体">"<span style="color: blue">false</span>"<span style="color: blue"> /&gt;</span></span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">通过 &lt;authentication&gt; 节可以配置 ASP.NET 使用的</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">安全身份验证模式，</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">以标识传入的用户。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: blue; font-family: 新宋体">--&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">authentication</span><span style="font-size: 9pt; color: red; font-family: 新宋体">mode</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">=</span><span style="font-size: 9pt; font-family: 新宋体">"<span style="color: blue">Windows</span>"<span style="color: blue"> /&gt;</span></span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">如果在执行请求的过程中出现未处理的错误，</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">则通过 &lt;customErrors&gt; 节可以配置相应的处理步骤。具体说来，</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">开发人员通过该节可以配置</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">要显示的 html 错误页</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: green; font-family: 新宋体">以代替错误堆栈跟踪。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;error statusCode="403" redirect="NoAccess.htm" /&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;error statusCode="404" redirect="FileNotFound.htm" /&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/customErrors&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: green; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: blue; font-family: 新宋体">--&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp; &lt;/</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">system.web</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&lt;/</span><span style="font-size: 9pt; color: maroon; font-family: 新宋体">configuration</span><span style="font-size: 9pt; color: blue; font-family: 新宋体">&gt;</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt; text-align: center" align="center"><strong><span style="font-family: 宋体">迁移到</span>Access</strong></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt">&nbsp;&nbsp; <span style="font-family: 宋体">将</span>webpart<span style="font-family: 宋体">的数据库迁移到</span>sqlserver<span style="font-family: 宋体">是一件非常方便的事，但是对于很多小型网站来说</span>,access<span style="font-family: 宋体">才是最佳选择。但是要将数据库迁移到</span>Access<span style="font-family: 宋体">却是一件非常的复杂的事情</span>, <span style="font-family: 宋体">而且网上也没有查到这方面现成的中文资料</span>,<span style="font-family: 宋体">之前在微软英文</span>asp.net<span style="font-family: 宋体">新闻组发了个贴子也没人回答，有些英文资料也是语焉不详</span>,<span style="font-family: 宋体">不成系统。</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt">&nbsp;<span style="font-family: 宋体">下面我来说一下详细的过程。</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt">&nbsp;&nbsp; <span style="font-family: 宋体">首先你需要一个</span>access<span style="font-family: 宋体">的</span>Provider<span style="font-family: 宋体">以及相对应的数据库。之前我曾经从网上找了一个</span>access<span style="font-family: 宋体">的</span>provider<span style="font-family: 宋体">，并尝试把</span>SQLServer<span style="font-family: 宋体">版的表导出成</span>Access<span style="font-family: 宋体">，结果发现这条路是行不通的</span>,<span style="font-family: 宋体">因为不匹配。</span></p>
<p style="margin: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">目前在英文</span>google<span style="font-family: 宋体">里能找到两个</span>access<span style="font-family: 宋体">的</span>Provide</p>
<p style="margin: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">一个是</span>AccessPersonalizationProvider<span style="font-family: 宋体">，下载地址是</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt"><a href="http://www.kowitz.net/files/AccessPersonalizationProvider.zip" target="_new">http://www.kowitz.net/files/AccessPersonalizationProvider.zip</a></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt"><span style="font-family: 宋体">命名空间为</span>MarkItUp.SingleUserBlog.Web.WebParts.AccessProviders&nbsp;<span style="font-family: 宋体">虽然在源代码注释里也写着</span>copyright<span style="font-family: 宋体">是微软的</span>,<span style="font-family: 宋体">但是下载时没有对应的数据库。</span></p>
<p style="margin: 0cm 0cm 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">另外一个是微软官方网站上的以前</span>Beta1<span style="font-family: 宋体">时出的</span> SampleAccessProviders,<span style="font-family: 宋体">解压后自带一个</span>access<span style="font-family: 宋体">数据库，而且还有</span>web.config<span style="font-family: 宋体">的样例。下载地址是</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt"><a href="http://msdn.microsoft.com/vstudio/eula.aspx?id=96713a8e-b8d4-4d6e-bb8f-027e6c8e15d8">http://msdn.microsoft.com/vstudio/eula.aspx?id=96713a8e-b8d4-4d6e-bb8f-027e6c8e15d8</a></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt"><span style="font-family: 宋体">我用的是后者。</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt"><span style="font-family: 宋体">下载后，名字是</span>SampleAccessProviders.vsi<span style="font-family: 宋体">，解压缩后可以在</span>C:"Documents and Settings"Administrator"My Documents"Visual Studio 2005"Templates"ProjectTemplates"Visual Web Developer"Starter Kits"ASP.NET Access Providers&nbsp;<span style="font-family: 宋体">找到。</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt"><span style="font-family: 宋体">你可以用</span>vs.net2005<span style="font-family: 宋体">打开</span>Access.csproj<span style="font-family: 宋体">编译出</span>dll,<span style="font-family: 宋体">名字为</span>SampleAccessProviders.dll<span style="font-family: 宋体">，然后把</span>ASPNetDB.mdb<span style="font-family: 宋体">复制到</span>App_Data<span style="font-family: 宋体">目录，然后在自己的网站中引用</span>SampleAccessProviders.dll<span style="font-family: 宋体">，并参考那个</span>web.config<span style="font-family: 宋体">修改自己的配置文件。</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt; text-align: center" align="center"><strong><span style="font-family: 宋体">关于其他数据库</span></strong></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt"><span style="font-family: 宋体">由于</span>SampleAccessProviders<span style="font-family: 宋体">是开放源代码的，所以参照着自己扩展</span>Provider<span style="font-family: 宋体">。目前网上可以找到</span>XmlFilePersonalizationProvider<span style="font-family: 宋体">。对于</span>Oracle,mysql<span style="font-family: 宋体">等数据库可以自己写扩展</span>Provider<span style="font-family: 宋体">，但是目前我们已有了</span>access<span style="font-family: 宋体">这种数据库独立的方式，所以可以通过混用来实现更为方便。</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 11.25pt"><strong><span style="font-family: 宋体">后记：</span></strong><span style="font-family: 宋体">来到埃塞俄比亚当志愿者已有近两个月了，工作一点挑战也没有，又打战了，在这种网络只有</span>56K<span style="font-family: 宋体">的鸟地方，真是一种痛苦。百无聊赖之际，想想以前在国内一直没有时间空下来好好研究一下</span>vs.net2005<span style="font-family: 宋体">，（主要是更喜欢</span>vs.net 2003<span style="font-family: 宋体">的小巧），特写此文，结果写完了，一直上了不博客园，直到今天才打开，真是郁闷呀。</span></p>
<img src ="http://www.cnblogs.com/laixiaoyu/aggbug/1224771.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41314/" target="_blank">[新闻]奥运核心资源被分食 搜狐央视网谁忽悠谁？</a>]]></description></item><item><title>Net 2.0 多层架构工具</title><link>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224653.html</link><dc:creator>赖小羽</dc:creator><author>赖小羽</author><pubDate>Wed, 18 Jun 2008 06:23:00 GMT</pubDate><guid>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224653.html</guid><wfw:comment>http://www.cnblogs.com/laixiaoyu/comments/1224653.html</wfw:comment><comments>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/laixiaoyu/comments/commentRss/1224653.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/laixiaoyu/services/trackbacks/1224653.html</trackback:ping><description><![CDATA[<span style="font-size: 15pt"><span style="color: green">您在 .Net 2.0 开发吗？</span></span><br />
<br />
<br />
一个新的开发模式，基于 c# 2.0 + MSSQL 2005<br />
<br />
<br />
<br />
为什么使用 NicPetShop ？<br />
<br />
1、在使用多层开发，是否存在 inner join 查询的痛苦？<br />
<br />
2、在使用 orM 开发，是否觉得系统很臃肿，调用方法也不尽人意（简单）？<br />
<br />
3、您是否经常为了分页而不断从旧的代码中 COPY 几十行代码，也保证不了分页的易用通用？<br />
<br />
4、您的开发模式使用起来简单吗？<br />
<br />
<br />
<br />
NicPetShop 可以解决<br />
<br />
1、采用多层开发架构<br />
<br />
2、采用 c# 强类型与数据库表映射，并且引入 .net 2.0 的 System.Nullable&lt;T&gt; 支持可空类型<br />
<br />
3、能将数据库的关系映射到 c#，让您使用更方便，让你不再为 inner join 查询烦恼<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;类似 &lt;%# Eval("userGroupInfo.GroupName") %&gt; 这样的绑定方式<br />
&nbsp;&nbsp;&nbsp;&nbsp;List&lt;UserInfo&gt; User.GetItemsByUser_group_id(int user_group_id); 这样的快速方法生成<br />
<br />
4、高效绑定分页，支持 repeater，datalist，gridview，并且支持设计时（傻瓜式）分页，也可将分页写入代码中，2行以内代码就可以为你制造高性能的多种分页方案<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;dataListPager1.DataSouce = User.GetItemsByUser_group_id(user_group_id, dataListPager1.Pager);<br />
&nbsp;&nbsp;&nbsp;&nbsp;dataListPager1.DataBind();<br />
<br />
5、语法简洁，功能强大<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;A、添加数据后即刻返回当前插入的对象(对应数据库表中新插入的行)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UserInfo user = User.Insert(null, "nic", "******");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//UserInfo user = new UserInfo();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//user.UserName = "nic";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//user.PassWord = "******";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//user = User.Insert(user);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;B、按数据库建立的关系直接访问到主表对象<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UserInfo user = User.GetItem(1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User_groupInfo user_group = user.user_groupInfo;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;C、在页面上绑定项时很轻易的在关系间访问，特别对于无限级类别表的使用(parent_id -&gt; self.id 关系)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ItemTemplate&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%# Eval("Id") %&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%# Eval("UserName") %&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%# Eval("user_groupInfo.GroupName") %&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ItemTemplate&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;D、很轻易的得到对应 ID 的所有或自定义获取多少条集合<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;UserInfo&gt; users = User.GetItemsByUser_group_id(user_group_id); //所有<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;UserInfo&gt; users = User.GetItemsByUser_group_id(10, user_group_id); //前 10 条<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;UserInfo&gt; users = User.GetItemsByUser_group_id(new Limit(10, 20), user_group_id); //第 10 到 20 条<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;E、按主键或惟一索引生成相应的方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int rows = User.Delete(id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int rows = User.DeleteByUserName(userName);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UserInfo user = User.GetItem(id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UserInfo user = User.GetItemByUserName(userName);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;F、很轻易的得到所有或自定义获取多少条集合<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;UserInfo&gt; users = User.GetItems(); //所有<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;UserInfo&gt; users = User.GetItems(10); //前 10 条<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;UserInfo&gt; users = User.GetItems(new Limit(10, 20)); //第 10 到 20 条<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;H、ConnectionManager 安全管理 SqlConnection，对多线程安全使用<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlConnection conn = ConnectionManager.GetConnection();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;I、自动生成 RepeaterPager.cs，DataListPager.cs，GridViewPager.cs，它们分别继承于 System.Web.UI.WebControl.Repeater，System.Web.UI.WebControl.DataList，System.Web.UI.WebControl.GridView，支持设计时<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;J、将自己的 web 开发经验常用开发代码集中到生成的解决方案中<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;web.config，web.sitemap 的配置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;App_Code\BasePage.cs 的建立，自动添加 Title，meta-keywords，meta-content，siteMapPath操作<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connection.aspx 查看当前 web 程序使用的 sqlconnection 情况<br />
<br />
6、将永久免费给大家使用<br />
<img src ="http://www.cnblogs.com/laixiaoyu/aggbug/1224653.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41314/" target="_blank">[新闻]奥运核心资源被分食 搜狐央视网谁忽悠谁？</a>]]></description></item><item><title>GridView控件笔记 </title><link>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224651.html</link><dc:creator>赖小羽</dc:creator><author>赖小羽</author><pubDate>Wed, 18 Jun 2008 06:22:00 GMT</pubDate><guid>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224651.html</guid><wfw:comment>http://www.cnblogs.com/laixiaoyu/comments/1224651.html</wfw:comment><comments>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/laixiaoyu/comments/commentRss/1224651.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/laixiaoyu/services/trackbacks/1224651.html</trackback:ping><description><![CDATA[<span style="color: #993300">1、无数据依然显示表头<br />
</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: #008000">// 参数：所要绑定的GridView&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所要绑定的数据集</span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; public void BindNoRecords(GridView gridView, DataSet ds) <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ds.Tables[0].Rows.Count == 0) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds.Tables[0].Rows.Add(ds.Tables[0].NewRow()); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridView.DataSource = ds; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridView.DataBind(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int columnCount = gridView.Rows[0].Cells.Count;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridView.Rows[0].Cells.Clear(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridView.Rows[0].Cells.Add(new TableCell()); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridView.Rows[0].Cells[0].ColumnSpan = columnCount; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridView.Rows[0].Cells[0].Text = "没有任何记录！"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridView.RowStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
<span style="color: #993300">2、BoundField的格式化字符串<br />
</span><br />
&nbsp;&nbsp;&nbsp;&nbsp; DataFormatString="{0:F}" 还要加上HtmlEncode="false"才会生效。 <br />
&nbsp;&nbsp;&nbsp;&nbsp; 至于{0:F}格式请参照 <a href="http://www.cnblogs.com/tuyile006/archive/2006/07/13/449884.aspx">String.Format格式说明</a> <br />
<br />
<br />
<span style="color: #993300">3、分页</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 将AllowPaging属性设置为true，pagesize设置成你要求每页显示的行数，在pagerSettings中设置分页样式<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如&nbsp;&nbsp;：<br />
<span style="color: #808000">&nbsp;&nbsp;&nbsp; &nbsp;FirstPageText：首页<br />
&nbsp;&nbsp;&nbsp;&nbsp; LastPageText：尾页<br />
&nbsp;&nbsp;&nbsp;&nbsp; NextPageText：下一页<br />
&nbsp;&nbsp;&nbsp;&nbsp; PreviousPageText：上一页<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; Mode：NextPreviousFirstLast</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 给GridView1添加<span style="color: #ff0000">GridView1_PageIndexChanging</span>事件<br />
&nbsp;&nbsp;&nbsp;&nbsp; 写入代码如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808000"> protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (GridView1.EditIndex != -1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.Cancel = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.PageIndex = e.NewPageIndex;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataBind();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
</span>&nbsp;&nbsp;&nbsp; 注：dataBind();是你绑定数据的函数，接触过GridView的程序员都应该知道怎么写吧。<br />
<br />
&nbsp;&nbsp;&nbsp; 这样一个有分页功能的gridview就实现了<br />
<img src ="http://www.cnblogs.com/laixiaoyu/aggbug/1224651.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41314/" target="_blank">[新闻]奥运核心资源被分食 搜狐央视网谁忽悠谁？</a>]]></description></item><item><title>自定义MembershipProvider配合Asp.net 2.0 Login控件</title><link>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224637.html</link><dc:creator>赖小羽</dc:creator><author>赖小羽</author><pubDate>Wed, 18 Jun 2008 06:12:00 GMT</pubDate><guid>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224637.html</guid><wfw:comment>http://www.cnblogs.com/laixiaoyu/comments/1224637.html</wfw:comment><comments>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224637.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/laixiaoyu/comments/commentRss/1224637.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/laixiaoyu/services/trackbacks/1224637.html</trackback:ping><description><![CDATA[转向Asp.net 2.0，如果单单看Asp.net 2.0的例子和SDK，相信你一定对系统自带的Login<a href="http://www.programbbs.com/com/">控件</a>有比较深刻的印象。Asp.Net 2.0的Login<a href="http://www.programbbs.com/com/">控件</a>不用你写一行检测用户输入是否合法的<a href="http://www.programbbs.com/doc/">程序</a>代码及相关查询数据库的SQL脚本，只需把相应的<a href="http://www.programbbs.com/com/">控件</a>拖到Web表单中，即可完成用户登陆，创建用户，用户角色管理，修改密码用户详细情况，取回密码等功能模块。<br />
　　Login<a href="http://www.programbbs.com/com/">控件</a>看上去近乎完美，而我们现在手头正好来了一个项目要求采用Asp.net 2.0开发，而该项目也要求有登陆，用户管理，权限管理，修改密码等功能，相信绝大多数人都会考虑使用Login<a href="http://www.programbbs.com/com/">控件</a>来快速搞定这些要求。于是乎，大家拿出以前的教学例子，试着分析较深一层的代码，看看该在哪里对Login<a href="http://www.programbbs.com/com/">控件</a>修改一番，让它满足手头项目已设计好的数据库表结构。结果发现，除了aspx文件里面可以对Login<a href="http://www.programbbs.com/com/">控件</a>的外观，提示文字可以自定义外，cs文件中愣是找不到一行代码，然后继续翻MSDN和Google，终于知道，要在自己的项目中直接使用系统自带的Login<a href="http://www.programbbs.com/com/">控件</a>，需要做２项修改工作：<br />
　　1、根据你选用的数据库，修改Web.config中相应的connectionStrings。系统默认的数据库是SQL Server 2005 Express，如果我们的数据库是Access/SQL2000/2005/Oracle，当然要大改一番了。<br />
　　2、改完Web.config还不够，我们还得执行C:\WINNT\Microsoft.NET\Framework\v2.0.507\aspnet_sqlreg.exe注册你的sql server，该<a href="http://www.programbbs.com/doc/">程序</a>的作用是在你的数据库中建立Login<a href="http://www.programbbs.com/com/">控件</a>需要的所有资源(大约有上十个表，三十多条存储过程，上十个视图等等)，如果你使用的是access/orcale，或者是其他格式的数据库，那你自己去Google相应的SQL脚本吧。<br />
　　OK，想到Login<a href="http://www.programbbs.com/com/">控件</a>帮你节省的工作量，相信不少人都会咬着牙完成上面的２项工作。完成上面２项工作后，大家接着读项目需求，发现有用户组管理和权限管理，幸好开发资料上提到Login<a href="http://www.programbbs.com/com/">控件</a>集成的Role角色管理模块正好与之对应，不过以后我们创建一个用户后，还要再进入一个页面给用户选择所属用户组，当然，采用Role的话，我们可以设定一个用户同时属于多个用户组，貌似功能很强大哟。继续读项目需求，发现这些项目的用户对象还有不少Login<a href="http://www.programbbs.com/com/">控件</a>中没有的属性要保存，回头再去翻MSDN，发现Profile可以帮我们解决这个问题。<br />
　　嗯，除开使用Login<a href="http://www.programbbs.com/com/">控件</a>，运行aspnet_sqlreg.exe帮我们建立的上十个表，三十多条存储过程，上十个视图等，我们再不用建表保存用户的任何信息了，以后我们只用在Web.config文件和相应的cs代码中加上Role和Profile的处理代码，即可完成该项目的登陆，用户管理，密码修改功能。算算投入查MSDN，Google及修改Web.config文件和相应的cs代码的时间，相信原来自己写过自定义Login<a href="http://www.programbbs.com/com/">控件</a>的朋友已经准备发誓再也不碰Asp.net 2.0自带的Login<a href="http://www.programbbs.com/com/">控件</a>了。<br />
　　其实，我们完全有更简洁通用的办法来重用Asp.net 2.0自带的Login<a href="http://www.programbbs.com/com/">控件</a>，即只用它最基本的登陆及修改密码功能，这２个基本功能照旧从<a href="http://www.programbbs.com/tool/">工具</a>箱拖个<a href="http://www.programbbs.com/com/">控件</a>出来往Web表单上一扔即可，一行代码都不多加。其他的用户/用户组管理，权限管理不用扯上Login<a href="http://www.programbbs.com/com/">控件</a>，数据库想用什么产品就用什么产品，mysql/db2/infomax来者不拒;表结构想怎么设计就怎么设计，E-R图，UML图直接照搬就成;用户/用户组管理和权限管理模块想怎么规定就怎么规定，自关联，无限分级都行。总之一句话：让Login<a href="http://www.programbbs.com/com/">控件</a>附带的上十个表，三十多条存储过程，上十个视图见鬼去吧。<br />
　　下面细说实现方法，Asp.net 2.0的Login<a href="http://www.programbbs.com/com/">控件</a>用到了3个类来从数据库中获取相应的数据，分别是MemberShipprovider，RoleProvider及ProfileProvider，系统自带的这3个类的方法的代码被隐藏起来了，尽管没公开，但实际上就是使用我上面一直念叨的上十个表，三十多条存储过程，上十个视图。不管你用什么数据库，只要想使用Login<a href="http://www.programbbs.com/com/">控件</a>的所有功能，必须保证该数据库中有与之对应的十来个表，三十多条存储过程，十来个视图。<br />
　　当然，MS的架构设计师也不是某些人想象中的那么无能，上面的这三个类其实都是抽象类，系统的Login<a href="http://www.programbbs.com/com/">控件</a>实际调用的是从这３个类派生出来的针对SQL Server2000/2005的数据操作类，灵活的架构设计正是在这里体现出来。既然MemberShipProvider，RoleProvider及ProfileProvider三大头是抽象类，那么我们完全可以自定义一个只针对用户表的username及password２个列操作的MemberShipprovider派生类出来，重写登陆验证，修改密码以及其调用的方法，然后在Web.config中把membership的提供者指定为我们自己写的MemberShipprovider派生类，这样我们就可以和原来一样，把Login<a href="http://www.programbbs.com/com/">控件</a>的登陆和修改密码２个子<a href="http://www.programbbs.com/com/">控件</a>往Web表单上一拖了事。<br />
　　下面开始贴代码，懒的深究的朋友们可以直接把我给出的cs代码贴回去，建个cs文件放到App_Code目录下，然后按照后面的Web.config修改相应的connectionStrings和membership即可，以后任何项目要利用Asp.net 2.0的Login<a href="http://www.programbbs.com/com/">控件</a>的登陆和修改密码都是这样照葫芦画瓢，够傻瓜吧。
<p>&nbsp;</p>
<p>using System;<br />
using System.Data;<br />
using System.Configuration;<br />
using System.Data.SqlClient;<br />
using System.Collections.Generic;<br />
using System.Text.RegularExpressions;<br />
using System.Data.SqlTypes;<br />
using System.Web;<br />
using System.Web.Security;</p>
<p>/**//// &lt;summary&gt;<br />
/// MyMemberShip 的摘要说明<br />
/// &lt;/summary&gt;<br />
public class MyMemberShip : MembershipProvider<br />
...{<br />
&nbsp;&nbsp;&nbsp; private bool _requiresQuestionAndAnswer;<br />
&nbsp;&nbsp;&nbsp; private int _minRequiredPasswordLength; <br />
&nbsp;&nbsp;&nbsp; public MyMemberShip()<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO: 在此处添加构造函数逻辑<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public override string ApplicationName<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)<br />
&nbsp;&nbsp;&nbsp; ...{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (config["requiresQuestionAndAnswer"].ToLower() == "true")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _requiresQuestionAndAnswer = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _requiresQuestionAndAnswer = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int.TryParse(config["minPasswordLength"], out _minRequiredPasswordLength);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Initialize(name, config);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public override bool ChangePassword(string username, string oldPassword, string newPassword)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (SqlConnection connection = new SqlConnection(DBBase.DBConnectionString))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlCommand command = new SqlCommand();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command.CommandText = "update [User] set <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#117;&#115;&#101;&#114;&#95;&#112;&#119;&#100;&#61;&#64;&#110;&#101;&#119;&#112;&#119;&#100;">user_pwd=@newpwd</a> where <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#117;&#115;&#101;&#114;&#95;&#110;&#97;&#109;&#101;&#61;&#64;&#110;&#97;&#109;&#101;">user_name=@name</a> and <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#117;&#115;&#101;&#114;&#95;&#112;&#119;&#100;&#61;&#64;&#111;&#108;&#100;&#112;&#119;&#100;">user_pwd=@oldpwd</a>";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command.Parameters.AddWithValue("@name", username);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command.Parameters.AddWithValue("@oldpwd", CryptUtil.GetStringHashValue1(StringUtil.SqlEscape(oldPassword)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command.Parameters.AddWithValue("@newpwd", CryptUtil.GetStringHashValue1(StringUtil.SqlEscape(newPassword)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command.Connection = connection;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connection.Open();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (int)command.ExecuteNonQuery() &gt; 0 ? true : false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override bool DeleteUser(string username, bool deleteAllRelatedData)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override bool EnablePasswordReset<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get ...{ throw new Exception("The method or operation is not implemented."); }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override bool EnablePasswordRetrieval<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get ...{ throw new Exception("The method or operation is not implemented."); }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override int GetNumberOfUsersOnline()<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override string GetPassword(string username, string answer)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override MembershipUser GetUser(string username, bool userIsOnline)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime myDate = DateTime.Today;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MembershipUser user = new MembershipUser(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name, // Provider name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username, // Username<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null, // providerUserKey<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#98;&#111;&#98;&#99;&#121;&#64;&#50;&#49;&#99;&#110;&#46;&#99;&#111;&#109;">bobcy@21cn.com</a>, // Email<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String.Empty, // passwordQuestion<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String.Empty, // Comment<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; true, // isApproved<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false, // isLockedOut<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime.Now, // creationDate<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime.Now, // lastLoginDate<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime.Now, // lastActivityDate<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime.Now, // lastPasswordChangedDate<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new DateTime(1980, 1, 1) // lastLockoutDate<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return user; <br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override string GetUserNameByEmail(string email)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override int MaxInvalidPasswordAttempts<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get ...{ throw new Exception("The method or operation is not implemented."); }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override int MinRequiredNonAlphanumericCharacters<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get ...{ return 0; }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override int MinRequiredPasswordLength<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get ...{ return _minRequiredPasswordLength; } <br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override int PasswordAttemptWindow<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get ...{ throw new Exception("The method or operation is not implemented."); }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override MembershipPasswordFormat PasswordFormat<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get ...{ throw new Exception("The method or operation is not implemented."); }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override string PasswordStrengthRegularExpression<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get ...{ throw new Exception("The method or operation is not implemented."); }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override bool RequiresQuestionAndAnswer<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get ...{ return _requiresQuestionAndAnswer; }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override bool RequiresUniqueEmail<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get ...{ throw new Exception("The method or operation is not implemented."); }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override string ResetPassword(string username, string answer)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override bool UnlockUser(string userName)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override void UpdateUser(MembershipUser user)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("The method or operation is not implemented.");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public override bool ValidateUser(string username, string password)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (SqlConnection connection = new SqlConnection(DBBase.DBConnectionString))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlCommand command = new SqlCommand();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command.CommandText = "select count(0) from [User] where <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#117;&#115;&#101;&#114;&#95;&#110;&#97;&#109;&#101;&#61;&#64;&#110;&#97;&#109;&#101;">user_name=@name</a> and <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#117;&#115;&#101;&#114;&#95;&#112;&#119;&#100;&#61;&#64;&#112;&#119;&#100;">user_pwd=@pwd</a>";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command.Parameters.AddWithValue("@name", username);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command.Parameters.AddWithValue("@pwd", password);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command.Connection = connection;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connection.Open();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ((int)command.ExecuteScalar()) &gt; 0 ? true : false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
&nbsp;</p>
<p>Web.Config的membership节这样写，connectionStrings和数据库有关，不同的数据库差别很大，大家自己Google，我就不列出来了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;membership defaultProvider="MyMemberShip"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;providers&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;clear/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;add name="MyMemberShip" type="MyMemberShip" requiresQuestionAndAnswer="false" connectionString="AdminSqlServer" minRequiredNonalphanumericCharacters="0" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/providers&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/membership&gt;</p>
<p>　　如果我们想在用户验证登陆成功后做一些额外的处理，可以给登陆<a href="http://www.programbbs.com/com/">控件</a>的登陆按钮添加一个事件，，相应的代码如下：</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)<br />
&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Membership.ValidateUser(Login1.UserName, Login1.Password))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这里添加你的额外处理代码，如Session,login日至等等<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.Authenticated = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>　　如果还想重用Login<a href="http://www.programbbs.com/com/">控件</a>的其他功能，但不想按照系统附带的数据库设计的话，还可以按照你的项目的数据库设计重写RoleProvider和ProfileProvider2个抽象类，对这方面资料感兴趣的朋友可以看看下面这篇文章（重写了几个RoleProvider的方法），更多资料请自行查阅MSDN及Google：<br />
<a href="http://www.lemongtree.com/Archives/2006/11/28/0000572.aspx">http://www.lemongtree.com/Archives/2006/11/28/0000572.aspx</a></p>
<p>　　不过我个人的经验来看，每个项目的用户管理和权限管理都不尽相同，有的甚至差别很大，重写RoleProvider和ProfileProvider的重用价值不大。</p>
<img src ="http://www.cnblogs.com/laixiaoyu/aggbug/1224637.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41314/" target="_blank">[新闻]奥运核心资源被分食 搜狐央视网谁忽悠谁？</a>]]></description></item><item><title>asp.net 自带登陆控件  权限管理-访问地址怎么-导航等 的资料</title><link>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224595.html</link><dc:creator>赖小羽</dc:creator><author>赖小羽</author><pubDate>Wed, 18 Jun 2008 05:27:00 GMT</pubDate><guid>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224595.html</guid><wfw:comment>http://www.cnblogs.com/laixiaoyu/comments/1224595.html</wfw:comment><comments>http://www.cnblogs.com/laixiaoyu/archive/2008/06/18/1224595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/laixiaoyu/comments/commentRss/1224595.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/laixiaoyu/services/trackbacks/1224595.html</trackback:ping><description><![CDATA[<font face="Verdana">(一)登录<br />
　　asp.net 2.0中，新增了许多新的功能和控件。其中，新增的登陆控件可谓使得WEB应用的设计更加得心应手。什么是登陆控件呢？就是我们平常在WEB应用中经常要用到的用户注册，登陆，忘记密码，登陆后根据权限的不同而显示不同的页面等功能，现在在asp.net 2.0中都已经可以由提供的控件来实现了。<br />
　　asp.net 2.0中，为了更方便创建和管理用户，以及对 Web 应用程序中的页进行密码保护，引进了新的框架membership。新的框架包含用于处理身份验证和授权的新增功能，能够同时满足 Web 站点管理员和开发人员的需要。Web 站点管理员可以利用新的 Web 站点管理工具来创建新的用户和角色，以及控制对 Web 应用程序中页面的访问。Web 站点管理工具是一组预先编写的 ASP.NET页，不具备编程技巧的用户可以使用它们来配置 Web 应用程序。利用membership API,编程人员可以很方便地使用拖拉控件的方法，再加以少量的代码，就可以完全实现对用户，角色权限等的管理，还可以自定义做扩充。<br />
　　1.建立网站项目<br />
　　2.ASP.NET配置<br />
　　安全设置选项被分为三部分：用户，角色和规则。<br />
　　登录的身份验证可以配置为基于Forms和Windows的。<br />
　　3.使用登录控件<br />
　　说明:用户登录后,显示&#8220;退出&#8221;的提示，通过LoginStatus控件来实现。在控件的属性中，有LogoutAction和LogoutPageUrl两个属性，可以来设定注销时是仅仅刷新当前页面、转向到某个页面或者转向到登录页面。<br />
　　如何设定LoginPageUrl（登录的页面），运行程序时，当按这个控件的显示的Login链接时，总是转到根文件夹下的Login.aspx，而实际的登录文件在/Login/Login.aspx 。如何解决？<br />
　　查了下资料，原来登录的Url是在web.config中设置的。如果是用Form验证登录，缺省的web.config是这样写的：<br />
＜system.web＞<br />
　＜authentication mode="Forms" /＞<br />
＜/system.web＞ <br />
　　需要修改成如下的样子：<br />
＜system.web＞<br />
　＜authentication mode="Forms"＞<br />
＜forms loginUrl="~/member/login.aspx"＞＜/forms＞<br />
　＜/authentication＞<br />
＜/system.web＞ <br />
　　（二）站点导航<br />
　　1.三种导航控件<br />
　　Menu:使用一菜单显示站点的结构。<br />
　　TreeView：用一个可展开的树显示站点的结构<br />
　　SiteMapPath:用于显示终端用户处于相对于站点结构的具体位置<br />
　　2.Web.sitemap 导航XML文件<br />
＜?xml version="1.0" encoding="utf-8" ?＞<br />
＜siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" ＞<br />
　＜siteMapNode title="首页" url="SiteMapTest.aspx" ＞<br />
　＜siteMapNode title="产品" roles="*"＞<br />
＜siteMapNode title="Windows" url="SiteMapTest.aspx?id=windows" /＞<br />
＜siteMapNode title="Office" url="SiteMapTest.aspx?id=office" /＞<br />
＜siteMapNode title="Mobile Devices" url="SiteMapTest.aspx?id=mobile" /＞<br />
＜siteMapNode title="Business Solutions" url="SiteMapTest.aspx?id=business" /＞<br />
＜siteMapNode title="Servers" url="SiteMapTest.aspx?id=servers" /＞<br />
＜siteMapNode title="Developer Tools" url="SiteMapTest.aspx?id=tools" /＞<br />
＜siteMapNode title="Games and XBox" url="SiteMapTest.aspx?id=games" /＞<br />
＜siteMapNode title="All Products" url="SiteMapTest.aspx?id=all" /＞<br />
　＜/siteMapNode＞<br />
　＜siteMapNode title="资源" roles="*"＞<br />
　＜siteMapNode title="支持" roles="*"＞<br />
＜siteMapNode title="修改密码" url="~/Login/ChangePassword.aspx" /＞<br />
＜siteMapNode title="Knowledge Base" url="SiteMapTest.aspx?id=knowledge" /＞<br />
　＜/siteMapNode＞<br />
　＜siteMapNode title="Downloads" url="SiteMapTest.aspx?id=downloads" /＞<br />
　＜siteMapNode title="Windows Update" url="SiteMapTest.aspx?id=windowsupdate" /＞<br />
　＜siteMapNode title="Office Update" url="SiteMapTest.aspx?id=officeupdate" /＞<br />
　＜siteMapNode title="Learning Tools"＞<br />
＜siteMapNode title="Training &amp;amp; Certification" url="SiteMapTest.aspx?id=training" /＞<br />
＜siteMapNode title="Books" url="SiteMapTest.aspx?id=books" /＞<br />
＜siteMapNode title="Events &amp;amp; Webcasts" url="SiteMapTest.aspx?id=events" /＞<br />
＜siteMapNode title="Patterns &amp;amp; Practices" url="SiteMapTest.aspx?id=patterns" /＞<br />
　＜/siteMapNode＞<br />
　＜siteMapNode title="Community" url="SiteMapTest.aspx?id=community" /＞<br />
　＜siteMapNode title="Security" url="SiteMapTest.aspx?id=security" /＞<br />
＜/siteMapNode＞<br />
＜siteMapNode title="RSS" roles="*"＞<br />
＜siteMapNode title="公司关系" url="SiteMapTest.aspx?id=relations" /＞<br />
＜siteMapNode title="RSSSite" url="~/RSS/RSSSite.aspx" /＞<br />
＜siteMapNode title="Careers" url="SiteMapTest.aspx?id=careers" /＞<br />
＜siteMapNode title="About this Site" url="SiteMapTest.aspx?id=about" /＞<br />
＜/siteMapNode＞<br />
＜/siteMapNode＞<br />
＜/siteMap＞ <br />
　　Web.sitemap文件必须包含根结点sitemap。一张站点地图由一系列相联系的SiteMapNode对象组成。这些SiteMapNode以一种层次方式联系在一起。该层次包含单个根结点-它是该层中唯一的一个没有父结点的结点，代表首页。在该父sitemapnode结点下，可以有若干个子sitemapnode结点，分别按层次结构代表了网站的各子栏目(留意一下上例中，各个子结点之间的包含关系)。<br />
3. 数据源SiteMapDataSource控件<br />
　　SiteMapDataSource会自动查找项目中名为Web.sitemap的 一个XML文件<br />
　　（三）权限管理<br />
　　网站在安全性方面有一个常见的要求：特定的页面仅允许某些成员或其他经过身份验证的用户浏览。ASP.NET 的角色管理提供了一种方法，可以基于安全角色限制对 Web 文件的访问。站点地图安全性调整提供了一种同样基于安全角色的方法来隐藏站点地图中的导航链接。<br />
　　1. ASP.NET 网站配置<br />
　　1）提供程序<br />
　　可使用 SQL SERVER 2005(默认)，2000和Access数据库存储用户信息。<br />
　　若要使用 SQL SERVER 2000数据库存储信息：<br />
　　a.用SQL Server的企业管理器，创建一个数据库，如为zyh;<br />
　　b.用aspnet_regsql（C:WindowsMicrosoft.NetFrameworkv2.0.50215aspnet_regsql.exe)创建数据库。除在创建向导的第3步数据库下拉框选择&#8220;zyh&#8221;以外，其余各步骤皆使用默认设置。这样，在Sql Server 2000中会创建一个含有用户表和存贮过程的完整数据库。<br />
　　c.在管理工具中打开IIS，找到虚拟目录newtest，用鼠标右键点击，然后左键点菜单项【属性】、【ASP.NET】标签、【编辑配置】按钮，在【常规】标签的【连接字符串管理器】中，点名称【LocalSqlServer】，点【编辑】按钮，把【连接参数】修改为相应能够连接到数据库zyh的数据库连接字符串，如&#8220;Data Source=.;Initial Catalog=zyh;Persist Security Info=True;User ID=sa;Password=12345&#8221;,此后，一直点【确定】按钮，最后到IIS管理工具界面即可。<br />
　　d.最后返回网站管理工具Web页面，点击安全主题，就会出现&#8220;使用安全设置向导按部就班地配置安全性。&#8221;链接和其它相关链接。<br />
2）安全设置选项被分为三部分：用户，角色和规则。<br />
　　其中规则建立了角色对项目中文件夹的访问权限。<br />
　　3)应用程序配置<br />
　　可设置SMTP服务器 以供用户通过email找回密码。<br />
　　2. 建立登录页面<br />
　　3.在Web.config文件中启用角色管理<br />
＜system.web＞<br />
＜siteMap defaultProvider="XmlSiteMapProvider" enabled="true"＞<br />
＜providers＞<br />
＜add name="XmlSiteMapProvider"<br />
description="Default SiteMap provider."<br />
type="System.Web.XmlSiteMapProvider "<br />
siteMapFile="Web.sitemap"<br />
securityTrimmingEnabled="true" /＞<br />
＜/providers＞<br />
＜/siteMap＞<br />
＜roleManager enabled="true" /＞<br />
＜authentication mode="Forms"＞<br />
＜forms loginUrl="~/Login/login.aspx"＞＜/forms＞<br />
＜/authentication＞<br />
＜compilation debug="true"＞<br />
＜assemblies＞<br />
＜add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/＞<br />
＜/assemblies＞<br />
＜/compilation＞<br />
＜/system.web＞<br />
＜system.net＞<br />
＜mailSettings＞<br />
＜smtp from="wangyihust@163.com"＞<br />
＜network host="smtp.163.com" password="passwordModify" userName="wangyihust" /＞<br />
＜/smtp＞<br />
＜/mailSettings＞<br />
＜/system.net＞ <br />
　　4.在Web.sitemap 文件中 加入角色权限，以显示或隐藏相关页面<br />
＜siteMapNode title="RSS" roles="*"＞<br />
＜siteMapNode title="公司关系" url="SiteMapTest.aspx?id=relations" /＞<br />
＜siteMapNode title="RSSSite" url="~/RSS/RSSSite.aspx" /＞<br />
＜siteMapNode title="Careers" url="SiteMapTest.aspx?id=careers" /＞<br />
＜siteMapNode title="About this Site" url="SiteMapTest.aspx?id=about" /＞<br />
＜/siteMapNode＞ <br />
　　其中，roles="*"表示所有人都可以看到下面的页面，但是我们在规则中可以拒绝某些 角色的用户看到下面的相关页面（通过目录权限控制）。<br />
</font>
 <img src ="http://www.cnblogs.com/laixiaoyu/aggbug/1224595.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41314/" target="_blank">[新闻]奥运核心资源被分食 搜狐央视网谁忽悠谁？</a>]]></description></item><item><title>masterpage和相对路径的问题</title><link>http://www.cnblogs.com/laixiaoyu/archive/2008/06/15/1222737.html</link><dc:creator>赖小羽</dc:creator><author>赖小羽</author><pubDate>Sun, 15 Jun 2008 14:01:00 GMT</pubDate><guid>http://www.cnblogs.com/laixiaoyu/archive/2008/06/15/1222737.html</guid><wfw:comment>http://www.cnblogs.com/laixiaoyu/comments/1222737.html</wfw:comment><comments>http://www.cnblogs.com/laixiaoyu/archive/2008/06/15/1222737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/laixiaoyu/comments/commentRss/1222737.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/laixiaoyu/services/trackbacks/1222737.html</trackback:ping><description><![CDATA[摘要: 目前正在做的四川移动项目中遇到了一个小小的问题：母版页引用的脚本的相对路径该怎么写？<br>起因：对于这个相对路径是对于母版页还是对于内容页。答案是内容页，（母版页只是替换内容页），这样就遇到了一个问题:当内容页和母版页不在同一个目录下的时候，并且内容页也分别放在不同的文件夹下的时候，不同的内容页对于脚本引用的相对路径就有所不同。<br>提出问题：关于母版页MasterPage中引用JavaScript,CSS的问题，如果所有套用模板的页面都在同一个路径下，这个问题就不存在了。但是在实际中为了方面管理，往往会建立一些文件夹，将引用的MasterPage放到不同的文件夹下，这是在MasterPage引用的JS,CSS文件由于路径的问题，在套用母版页中的内容页面中不一定都能访问到。那这个问题该如何解决了？<br>解决问题：通过自己的努力思考和网上的参考资料得到一些解决办法：&nbsp;&nbsp;<a href='http://www.cnblogs.com/laixiaoyu/archive/2008/06/15/1222737.html'>阅读全文</a><img src ="http://www.cnblogs.com/laixiaoyu/aggbug/1222737.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41313/" target="_blank">[新闻]微软推新型搜索技术"BrowseRank"挑战谷歌</a>]]></description></item><item><title>利用新的动态绑定时间格式的代码</title><link>http://www.cnblogs.com/laixiaoyu/archive/2008/06/15/1222278.html</link><dc:creator>赖小羽</dc:creator><author>赖小羽</author><pubDate>Sun, 15 Jun 2008 03:45:00 GMT</pubDate><guid>http://www.cnblogs.com/laixiaoyu/archive/2008/06/15/1222278.html</guid><wfw:comment>http://www.cnblogs.com/laixiaoyu/comments/1222278.html</wfw:comment><comments>http://www.cnblogs.com/laixiaoyu/archive/2008/06/15/1222278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/laixiaoyu/comments/commentRss/1222278.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/laixiaoyu/services/trackbacks/1222278.html</trackback:ping><description><![CDATA[<font face="Verdana"><font face="Verdana">&nbsp;&lt;%# Eval("shijian","{0:yyyy-M}")&nbsp; %&gt;</font></font>
<img src ="http://www.cnblogs.com/laixiaoyu/aggbug/1222278.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41313/" target="_blank">[新闻]微软推新型搜索技术"BrowseRank"挑战谷歌</a>]]></description></item></channel></rss>