如何:生成并运行配置文件提供程序示例

更新:2007 年 11 月

本节中的主题包含 ASP.NET 配置文件提供程序示例的代码。该示例提供程序使用用于 ODBC 的 .NET Framework 数据提供程序连接到 ODBC 数据源。该示例使用一个 Access 数据库作为其数据源。

此主题描述有关实现配置文件提供程序示例的详细信息,并描述如何生成示例以及如何配置 ASP.NET 应用程序以使用该示例提供程序。

8zs47k7y.alert_note(zh-cn,VS.90).gif说明:

由于数据源支持不同的 SQL 语法,有些 SQL 命令可能可用于某数据源,而不能用于其他数据源。因此,即使您使用用于 ODBC 的 .NET Framework 数据提供程序或用于 OLEDB 的 .NET Framework 数据提供程序访问数据源,我们也建议专门为数据源创建一个配置文件提供程序。例如,可以创建单独的提供程序,如 SybaseProfileProvider、OracleProfileProvider 等。

若要查看示例提供程序的代码,请参见 配置文件提供程序实现示例

创建提供程序数据库

提供程序被设计为对 Profiles、StockSymbols 和 ProfileData 这三个数据库表中的数据进行读写操作。示例配置文件提供程序支持两个配置文件属性:股票符号列表和邮政编码。

每个用户配置文件在数据库的 Profiles 表中进行唯一标识。该表包含配置文件信息,如应用程序名称和上次活动日期。Profiles 表包含一个自动增加的主键,该主键用于唯一标识每行,并将该表与数据库中包含配置文件属性值的其他表关联起来。

StockSymbols 表包含使用 StockSymbols 属性存储和检索的股票符号列表的值。由于一个用户配置文件可以跟踪任意多个股票符号,因此 StockSymbols 表与 Profiles 表具有一对多的关系。

ZipCode 属性值存储在 ProfileData 表中。ProfileData 表与 Profiles 表具有一对一的关系。

创建用于存储配置文件的数据库表

  1. 创建一个新的 Microsoft Access 数据库或打开现有的 Microsoft Access 数据库。

    8zs47k7y.alert_note(zh-cn,VS.90).gif说明:

    如果将数据库存储在 Web 应用程序的文件夹中,建议您将数据库存储在应用程序的 App_Data 文件夹中。App_Data 的内容可由应用程序代码使用,但不对 Web 请求公开。此外,ASP.NET 进程有在 App_Data 文件夹中进行读写操作的权限。

  2. 在 Access 或其他可在 Access 数据库中创建表的工具中,发出以下数据定义查询以创建 Profiles 表:

    CREATE TABLE Profiles
    (
      UniqueID AutoIncrement NOT NULL PRIMARY KEY,
      Username Text (255) NOT NULL,
      ApplicationName Text (255) NOT NULL,
      IsAnonymous YesNo, 
      LastActivityDate DateTime,
      LastUpdatedDate DateTime,
        CONSTRAINT PKProfiles UNIQUE (Username, ApplicationName)
    )
    
  3. 发出以下数据定义查询以创建 StockSymbols 表:

    CREATE TABLE StockSymbols
    (
      UniqueID Integer,
      StockSymbol Text (10),
        CONSTRAINT FKProfiles1 FOREIGN KEY (UniqueID)
          REFERENCES Profiles
    )
    
  4. 发出以下数据定义查询以创建 ProfileData 表:

    CREATE TABLE ProfileData
    (
      UniqueID Integer,
      ZipCode Text (10),
        CONSTRAINT FKProfiles2 FOREIGN KEY (UniqueID)
          REFERENCES Profiles
    )
    

提供事件日志访问

如果示例提供程序在使用数据源时遇到异常,则该提供程序会将异常的详细信息写入 Windows 应用程序事件日志,而不是将异常返回给 ASP.NET 应用程序。这是一种安全措施,用于避免在 ASP.NET 应用程序中公开有关数据源的私有信息。

该示例提供程序指定了“OdbcProfileProvider”的事件 Source。在 ASP.NET 应用程序能够成功写入应用程序事件日志之前,需要创建对事件日志的访问。

8zs47k7y.alert_note(zh-cn,VS.90).gif说明:

如果不希望示例提供程序将异常写入事件日志,则可以在 Web.config 文件中的提供程序配置中将 writeExceptionsToEventLog 属性设置为 false。

提供对事件日志的访问

  • 使用 Regedit.exe 或其他 Windows 注册表编辑工具创建以下注册表项:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\OdbcProfileProvider
    

生成示例提供程序

为了使用示例提供程序,必须使此代码对 Web 应用程序可用。有两种方法可以做到这一点:

  • 将示例提供程序源代码放入应用程序的 App_Code 文件夹中。在这种情况下,无需手动编译代码示例。

  • 编译该代码并将生成的程序集放入应用程序的 Bin 文件夹中,或对其进行强命名并放置到全局程序集缓存中。

测试示例提供程序(不手动编译)

  1. 如果应用程序没有一个名为 App_Code 的文件夹,请在应用程序根目录下创建此文件夹。

  2. 根据要使用的编程语言,在 App_Code 文件夹中创建一个名为 OdbcProfileProvider.vb 或 OdbcProfileProvider.cs 的文本文件。

    8zs47k7y.alert_note(zh-cn,VS.90).gif说明:

    如果应用程序的 App_Code 目录中已经有源代码,则请使用与目录中现有代码相同的语言编写的示例提供程序版本。当首次请求 ASP.NET 应用程序中的某页面时,ASP.NET 将对该提供程序进行编译。

  3. 复制示例源代码(用适当的语言编写)并将其粘贴到相应的文本文件中,然后保存该文件。

编译示例提供程序

  1. 创建一个文件夹,用于存放自定义控件和相关类的源文件。

  2. 根据要使用的编程语言,在源代码文件夹中创建一个名为 OdbcProfileProvider.vb 或 OdbcProfileProvider.cs 的文本文件。

    8zs47k7y.alert_note(zh-cn,VS.90).gif说明:

    如果还要手动编译该示例并将其程序集添加到 Bin 文件夹中,则不要将源代码放入 App_Code 文件夹中。否则,提供程序的类型将同时在于已编译的程序集和由 ASP.NET 从 App_Code 文件夹创建的动态生成的程序集中。当加载该提供程序时将创建不明确的引用,并且引用该类型的任何代码将生成编译器错误。

  3. 将每个示例的源代码复制并粘贴到相应的文本文件,然后保存该文件。

  4. 从源代码文件夹运行以下命令,以便将控件和相关类编译到程序集中。

    vbc /out:OdbcProfileProvider.dll /t:library OdbcProfileProvider.vb /r:System.Web.dll /r:System.Configuration.dll
    
    csc /out:OdbcProfileProvider.dll /t:library OdbcProfileProvider.cs /r:System.Web.dll /r:System.Configuration.dll
    

    /t:library 编译器选项让编译器创建一个库(而不是可执行程序集)。/out 选项可为程序集提供名称,而 /r 选项则可列出链接到您的程序集的那些程序集。

    8zs47k7y.alert_note(zh-cn,VS.90).gif说明:

    如果无法执行编译器命令,则在运行命令之前必须将 .NET Framework 安装路径添加到 PATH 变量中。在 Windows 中,右击“我的电脑”,然后依次单击“属性”“高级”选项卡和“环境变量”按钮。在“系统变量”列表中,双击 Path 变量。在“变量值”文本框中,将一个分号 (;) 添加到文本框中的现有值的末尾,然后键入 .NET Framework 的安装路径。.NET Framework 通常安装在位于 \Microsoft.NET\Framework\版本号 的 Windows 安装文件夹中。

在 ASP.NET 应用程序中配置示例提供程序

若要在 ASP.NET Web 应用程序中使用示例提供程序,则必须对该应用程序进行配置以注册该提供程序。

此示例配置假定您的网站设置为使用 Forms 身份验证,并包含允许用户登录并创建用户标识的、名为 Login.aspx 的 ASP.NET 页。此示例配置还支持匿名身份验证,使用户无需登录即可使用。

配置应用程序以使用示例提供程序

  1. 创建一个名为 Login.aspx 的 ASP.NET 页并执行以下操作之一:

    • 如果应用程序已配置为使用 ASP.NET 成员资格,请向该页面添加一个 Login 控件。

    • 创建一个登录窗体并使用 Forms 身份验证对用户进行身份验证。有关详细信息,请参见如何:实现简单的 Forms 身份验证

      8zs47k7y.alert_note(zh-cn,VS.90).gif说明:

      Forms 身份验证所需的配置元素在步骤 4 中进行说明。

  2. 在计算机上创建一个名为“OdbcProfile”的 DSN 并对其进行配置,使其包含到前面创建的 Access 数据库的连接信息。

  3. 如果 ASP.NET 应用程序没有一个名为 Web.config 的文本文件,则请在应用程序的根目录中创建此文件。

  4. 在 Web.config 文件中添加以下元素:

    <configuration>
      <connectionStrings>
        <add name="OdbcProfile" connectionString="DSN=OdbcProfile;" />
      </connectionStrings>
    
      <system.web>
        <authentication mode="Forms" >
          <forms loginUrl="login.aspx"
            name=".ASPXFORMSAUTH" />
        </authentication>
    
        <anonymousIdentification enabled="true" />
    
        <profile defaultProvider="OdbcProvider">
          <providers>
            <add
              name="OdbcProvider"
              type="Samples.AspNet.Profile.OdbcProfileProvider" 
              connectionStringName="OdbcProfile" /> 
          </providers>
    
          <properties>
            <add name="ZipCode" 
              allowAnonymous="true" />
            <add name="CityAndState" 
              provider="AspNetSqlProfileProvider" 
              allowAnonymous="true" />
            <add name="StockSymbols" 
              type="System.Collections.ArrayList" 
              allowAnonymous="true" />
          </properties>
        </profile>
      </system.web>
    </configuration>
    

请参见

概念

实现配置文件提供程序

ASP.NET 配置文件属性概述

其他资源

ASP.NET 母版页

ASP.NET 主题和外观