I believe I can fly, I can touch the sky!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

作者:童振华  (转载请注时作者)

       Webpartasp.net 2.0中一项非常出色的功能,但是非常遗憾的是,默认是使用sql express 2005作为后台数据库。而且很多初学者在本机写完程序迁移到服务器上以后才如梦初醒,原来还要后台数据库的,甚至WROX出的《Professional ASP.NET 2.0》在讲webpart这节时都不曾提及后台数据库的事,真是让人失望之极(起码我没看到)。而目前主流的网站都是用MS SQLServer 2000或是Access作为数据库,如何才能把Webpart的数据库从SQL Express 2005迁移到SQLServer 2000Access呢?

迁移到SQLServer 2000

       微软提供了一个数据库配置程序,可以方便的在SQLServer2000SQLServer2005上进行webpart的数据库配置

       1.首先运行SQLServer

       2.然后运行C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727"aspnet_regsql.exe 会出现一个图形化的操作界面,根据提示便可自动生成一个名为aspnetdb的库。

       3.打开vs.net 2005,新建一个网站,往页面上拖一个webpartmanager,运行一下,出错。因为你还没有配web.config呀,而且vs.net2005vs.net2003有所不同,默认是没有web.config文件的,需要我们自己增加,(当然你也可以直接修改C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727"CONFIG下默认的web.config,但是我不推荐)

       4.在新加的web.config中把 <connectionStrings/>一行修改成如下

 <connectionStrings>

    <removename="LocalSqlServer" />

    <addname="LocalSqlServer"connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Persist Security Info=True;User ID=sa;Password="

        providerName="System.Data.SqlClient" />

 </connectionStrings>

完成后的web.config

<?xmlversion="1.0"encoding="utf-8"?>

<!--

    注意: 除了手动编辑此文件以外,您还可以使用

    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的

     “网站”->“Asp.Net 配置”选项。

    设置和注释的完整列表在

    machine.config.comments 中,该文件通常位于

    "Windows"Microsoft.Net"Framework"v2.x"Config

-->

<configuration>

    <appSettings/>

    <connectionStrings/>

    <system.web>

        <!--

            设置 compilation debug="true" 将调试符号插入

            已编译的页面中。但由于这会

            影响性能,因此只在开发过程中将此值

            设置为 true。

        -->

        <compilationdebug="false" />

        <!--

            通过 <authentication> 节可以配置 ASP.NET 使用的

            安全身份验证模式,

            以标识传入的用户。

        -->

        <authenticationmode="Windows" />

        <!--

            如果在执行请求的过程中出现未处理的错误,

            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,

            开发人员通过该节可以配置

            要显示的 html 错误页

            以代替错误堆栈跟踪。

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">

            <error statusCode="403" redirect="NoAccess.htm" />

            <error statusCode="404" redirect="FileNotFound.htm" />

        </customErrors>

        -->

    </system.web>

</configuration>

迁移到Access

   webpart的数据库迁移到sqlserver是一件非常方便的事,但是对于很多小型网站来说,access才是最佳选择。但是要将数据库迁移到Access却是一件非常的复杂的事情, 而且网上也没有查到这方面现成的中文资料,之前在微软英文asp.net新闻组发了个贴子也没人回答,有些英文资料也是语焉不详,不成系统。

 下面我来说一下详细的过程。

   首先你需要一个accessProvider以及相对应的数据库。之前我曾经从网上找了一个accessprovider,并尝试把SQLServer版的表导出成Access,结果发现这条路是行不通的,因为不匹配。

       目前在英文google里能找到两个accessProvide

       一个是AccessPersonalizationProvider,下载地址是

http://www.kowitz.net/files/AccessPersonalizationProvider.zip

命名空间为MarkItUp.SingleUserBlog.Web.WebParts.AccessProviders 虽然在源代码注释里也写着copyright是微软的,但是下载时没有对应的数据库。

       另外一个是微软官方网站上的以前Beta1时出的 SampleAccessProviders,解压后自带一个access数据库,而且还有web.config的样例。下载地址是

http://msdn.microsoft.com/vstudio/eula.aspx?id=96713a8e-b8d4-4d6e-bb8f-027e6c8e15d8

我用的是后者。

下载后,名字是SampleAccessProviders.vsi,解压缩后可以在C:"Documents and Settings"Administrator"My Documents"Visual Studio 2005"Templates"ProjectTemplates"Visual Web Developer"Starter Kits"ASP.NET Access Providers 找到。

你可以用vs.net2005打开Access.csproj编译出dll,名字为SampleAccessProviders.dll,然后把ASPNetDB.mdb复制到App_Data目录,然后在自己的网站中引用SampleAccessProviders.dll,并参考那个web.config修改自己的配置文件。

关于其他数据库

由于SampleAccessProviders是开放源代码的,所以参照着自己扩展Provider。目前网上可以找到XmlFilePersonalizationProvider。对于Oracle,mysql等数据库可以自己写扩展Provider,但是目前我们已有了access这种数据库独立的方式,所以可以通过混用来实现更为方便。

后记:来到埃塞俄比亚当志愿者已有近两个月了,工作一点挑战也没有,又打战了,在这种网络只有56K的鸟地方,真是一种痛苦。百无聊赖之际,想想以前在国内一直没有时间空下来好好研究一下vs.net2005,(主要是更喜欢vs.net 2003的小巧),特写此文,结果写完了,一直上了不博客园,直到今天才打开,真是郁闷呀。

posted on 2008-06-18 16:34  赖小羽  阅读(527)  评论(0编辑  收藏  举报