`

10、使用用户配置文件

阅读更多
使用用户配置文件

Asp.net Framework提供了一种可选的不同于cookie和Session状态的方式存储用户信息:Profile对象。
Profile对象提供强类型、可持久化的Session状态表单。

web.config
	<system.web>
    <profile>
      <properties>
        <add name="firstName"/>
        <add name="lastName"/>
        <add name ="numberOfVisits" type="Int32" defaultValue="0"/>
      </properties>      
    </profile>  
...


Profile属性
name
type
defaultValue
readOnly
serializeAs
allowAnonymous
provider
customProviderData

2011-5-16 16:34 danny




web.config
<?xml version="1.0"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
	<system.web>
		<compilation debug="true" targetFramework="4.0"/>
		<profile>
			<properties>
				<add name="firstName"/>
				<add name="lastName"/>
				<add name="numberOfVisits" type="Int32" defaultValue="0"/>
			</properties>
		</profile>
	</system.web>
</configuration>


显示:ShowProfile.aspx
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_PreRender(object sender, EventArgs e)
    {
        lblFirstName.Text = Profile.firstName;
        lblLastName.Text = Profile.lastName;
        Profile.numberOfVisits++;
        lblNumberOfVisits.Text = Profile.numberOfVisits.ToString();
    }

    protected void btnUpdate_Click(object sender, EventArgs e)
    {
        Profile.firstName = txtNewFirstName.Text;
        Profile.lastName = txtNewLastName.Text;
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        First Name:
        <asp:Label ID="lblFirstName" runat="server" />
        <br />
        <br />
        Last Name:
        <asp:Label ID="lblLastName" runat="server" />
        <br />
        <br />
        Number of Visits:
        <asp:Label ID="lblNumberOfVisits" runat="server" />
        <hr />
        <asp:Label ID="lblNewFirstName" Text="New First Name:" AssociatedControlID="txtNewFirstName"
            runat="server" />
        <asp:TextBox ID="txtNewFirstName" runat="server" />
        <br />
        <br />
        <asp:Label ID="lblNewLastName" Text="New Last Name:" AssociatedControlID="txtNewLastName"
            runat="server" />
        <asp:TextBox ID="txtNewLastName" runat="server" />
        <br />
        <br />
        <asp:Button ID="btnUpdate" Text="Update Profile" runat="server" OnClick="btnUpdate_Click" />
    </div>
    </form>
</body>
</html>

1、创建用户配置文件组
通过用户分组来进行更多配置
web.config
<?xml version="1.0"?>

<configuration>
	<system.web>
		<compilation debug="true" targetFramework="4.0"/>
		<profile>
			<properties>
				<group name="Preferences">
					<add name="BackColor" defaultValue="lightblue"/>
					<add name="Font" defaultValue="Arial"/>
				</group>
				<group name="ContactInfo">
					<add name="Email" defaultValue="Your Email"/>
					<add name="Phone" defaultValue="Your Phone"/>
				</group>
			</properties>
		</profile>
	</system.web>
</configuration>


显示应用Profile组
ShowProfileGroups.aspx
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Drawing" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        lblEmail.Text = Profile.ContactInfo.Email;
        lblPhone.Text = Profile.ContactInfo.Phone;
        Style pageStyle = new Style();
        pageStyle.BackColor = ColorTranslator.FromHtml(Profile.Preferences.BackColor);
        pageStyle.Font.Name = Profile.Preferences.Font;

        Header.StyleSheet.CreateStyleRule(pageStyle, null, "html");
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Email:
        <asp:Label ID="lblEmail" runat="server" />
        <br />
        <br />
        Phone:
        <asp:Label ID="lblPhone" runat="server" />
    </div>
    </form>
</body>
</html>

显示结果:


2、支持匿名用户
web.config
<?xml version="1.0"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
	<system.web>
		<compilation debug="true" targetFramework="4.0"/>
		<authentication mode="Forms"/>
		<anonymousIdentification enabled="true"/>
		<profile>
			<properties>
				<add name="numberOfVisits" type="Int32" defaultValue="0" allowAnonymous="true"/>
			</properties>
		</profile>
	</system.web>
</configuration>


ShowAnonymousIdentification.aspx
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_PreRender(object sender, EventArgs e)
    {
        lblUserName.Text = Profile.UserName;
        lblIsAnonymous.Text = Profile.IsAnonymous.ToString();
        Profile.numberOfVisits++;
        lblNumberOfVisits.Text = Profile.numberOfVisits.ToString();
    }

    protected void btnLogin_Click(object sender, EventArgs e)
    {
        FormsAuthentication.SetAuthCookie("Danny", false);
        Response.Redirect(Request.Path);
    }

    protected void btnLogout_Click(object sender, EventArgs e)
    {
        FormsAuthentication.SignOut();
        Response.Redirect(Request.Path);
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        User Name:
        <asp:Label ID="lblUserName" runat="server" />
        <br />
        Is Anonymous:
        <asp:Label ID="lblIsAnonymous" runat="server" />
        <br />
        Number Of Visits:
        <asp:Label ID="lblNumberOfVisits" runat="server" />
        <hr />
        <asp:Button ID="btnReload" Text="Reload" runat="server" />
        <asp:Button ID="btnLogin" Text="Login" runat="server" OnClick="btnLogin_Click" />
        <asp:Button ID="btnLogout" Text="Logout" runat="server" OnClick="btnLogout_Click" />
    </div>
    </form>
</body>
</html>


显示结果:
匿名

登录

匿名和登录显示次数是不一样的。

2011-5-16 21:15 danny


3、合并匿名用户配置文件
前面例子可知道匿名和登录显示次数是不一样的。
当用户从匿名切换到验证状态时,所有的用户配置信息会丢失。
如果在Profile对象中存储了购物车,登录后则所有的购物车项目会丢失。
可以在用户从匿名切换到验证状态时,处理Global.asax文件中的MigrateAnonymous事件,预存Profile属性的值。
该事件在拥有用户配置的用户登录时触发。

只需在Global.asax中加入以下代码:
 public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
    { 
      //Get anonymous profile
        ProfileCommon annoProfile = Profile.GetProfile(args.AnonymousID);
        
        //Copy anonymous properties to authenticated
        foreach (SettingsProperty prop in ProfileBase.Properties)
        {
            Profile[prop.Name] = annoProfile[prop.Name];
        }
        
        
        //kill the anonymous profile
        ProfileManager.DeleteProfile(args.AnonymousID);
        AnonymousIdentificationModule.ClearAnonymousIdentifier();
            
    }



4、从自定义类继承Profile
自定义的Profile
App_Code/SiteProfile.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Profile;

 
public class SiteProfile : ProfileBase
{

    private string _firstName = "Your First Name";
    private string _lastName = "Your Last Name";
    [SettingsAllowAnonymous(true)]
    public string FirstName
    {
        get { return _firstName; }
        set { _firstName = value; }

    }
    [SettingsAllowAnonymous(true)]
    public string LastName
    {
        get { return _lastName; }
        set { _lastName = value; }
    }

}


相应的配置文件
web.config
<?xml version="1.0"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
	<system.web>
		<compilation debug="true" targetFramework="4.0"/>
		<anonymousIdentification enabled="true"/>
		<profile inherits="SiteProfile"/>
	</system.web>
</configuration>


显示ShowProfile.aspx
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_PreRender(object sender, EventArgs e)
    {
        lblFirstName.Text = Profile.FirstName.ToString();
        lblLastName.Text = Profile.LastName.ToString();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        First Name:
        <asp:Label ID="lblFirstName" runat="server" />
        <br />
        Last Name:
        <asp:Label ID="lblLastName" runat="server" />
    </div>
    </form>
</body>
</html>


显示结果:

当在一个类中定义Profile属性时,可以使用下面的特性修饰那些属性
SettingAllowAnonymouse   --用于允许匿名用户读写特性
ProfileProvider                   --用于关联属性到一个特定的Profile提供程序
CustomProviderData       --用于传递自定义数据到Profile提供程序

5、创建复杂Profile属性
Profile属性表示复杂的类
App_code\ShoppingCart.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Profile;

namespace DannyExample
{
    public class ShoppingCart
    {
        private List<CartItem> _items = new List<CartItem>();

        public List<CartItem> Items
        {
            get { return _items; }
        }

    }
    public class CartItem
    {
        private string _name;
        private decimal _price;
        private string _description;

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        public decimal Price
        {
            get { return _price; }
            set { _price = value; }
        }
        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }
        public CartItem() { }
        public CartItem(string name, decimal price, string description)
        {
            _name = name;
            _price = price;
            _description = description;
        }
    }
}


Web.config
<?xml version="1.0"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
    <profile>
      <properties>
        <add name="ShoppingCart" type="DannyExample.ShoppingCart"/>
      </properties>
    </profile>
  </system.web>
</configuration>


显示及操作界面:ShowShoppingCart.aspx
<%@ Page Language="C#" %>

<%@ Import Namespace="DannyExample" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_PreRender(object sender, EventArgs e)
    {
        grdShoppingCart.DataSource = Profile.ShoppingCart.Items;
        grdShoppingCart.DataBind();

    }

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        CartItem item = new CartItem(txtName.Text, decimal.Parse(txtPrice.Text), txtDescription.Text);
        Profile.ShoppingCart.Items.Add(item);
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="grdShoppingCart" EmptyDataText="There are no items in your shopping cart"
            runat="server">
        </asp:GridView>
        <br />
        <fieldset>
            <legend>Add Product</legend>
            <asp:Label ID="lblName" Text="Name:" AssociatedControlID="txtName" runat="server" />
            <br />
            <asp:TextBox ID="txtName" runat="server" />
            <br />
            <br />
            <asp:Label ID="lblPrice" Text="Price:" AssociatedControlID="txtPrice" runat="server" />
            <br />
            <asp:TextBox ID="txtPrice" runat="server" />
            <br />
            <br />
            <asp:Label ID="lblDescription" Text="Description:" AssociatedControlID="txtDescription"
                runat="server" />
            <br />
            <asp:TextBox ID="txtDescription" runat="server" />
            <br />
            <br />
            <asp:Button ID="btnAdd" Text="Add To Cart" runat="server" OnClick="btnAdd_Click" />
        </fieldset>
    </div>
    </form>
</body>
</html>


显示结果:
开始没有数据

添加数据

其中的奥秘在于App_Data\ASPNETDB.MDF(如果没有选择网站,单击右键,选中添加ASP.NET文件夹,然后选中App_Data,选中App_Data刷新即可)
打开数据库,其中有一张表:aspnet_Profile,查看数据:
UserID     用户的ID
PropertyNames  属性名称
PropertyValuesString 属性值
PropertyValuesBinary  Image 应该是保存图片
LastUpdateDate  最后更新时间

UserID :154cf3d3-70de-472c-8004-8931b29c48b6  不知道按什么算法算出来的。
PropertyNames:ShoppingCart:S:0:562:   ShoppingCart为属性名,: 为分隔符,0:表示分段位置,562为长度,当有多个值时0的值和562值就比较明显
PropertyValuesString:
<?xml version="1.0" encoding="utf-16"?>
<ShoppingCart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Items>
    <CartItem>
      <Name>aaa</Name>
      <Price>11</Price>
      <Description>ddge</Description>
    </CartItem>
    <CartItem>
      <Name>aaad</Name>
      <Price>112</Price>
      <Description>ddgeeg</Description>
    </CartItem>
    <CartItem>
      <Name>a</Name>
      <Price>11</Price>
      <Description>ad ddge</Description>
    </CartItem>
  </Items>
</ShoppingCart>


PropertyValuesBinary :没有细细研究。
LastUpdateDate:2011-5-16 14:13:00

补充:
Profile属性关联的serializeAs特性
Binary
ProviderSpecific
String
xml

Xml Serializer比 Binary Serializer臃肿。

App_code/ShoppingCart.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Profile;

namespace DannyExample
{
    [Serializable]
    public class ShoppingCart
    {
        private List<CartItem> _items = new List<CartItem>();

        public List<CartItem> Items
        {
            get { return _items; }
        }

    }
    [Serializable]
    public class CartItem
    {
        private string _name;
        private decimal _price;
        private string _description;

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        public decimal Price
        {
            get { return _price; }
            set { _price = value; }
        }
        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }
        public CartItem() { }
        public CartItem(string name, decimal price, string description)
        {
            _name = name;
            _price = price;
            _description = description;
        }
    }
}


Web.config
<?xml version="1.0"?>

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
    <profile>
      <properties>
        <add name="ShoppingCart" type="DannyExample.ShoppingCart" serializeAs="Binary"/>
      </properties>
    </profile>
  </system.web>
</configuration>


可能就保存在PropertyValuesBinary中。
查看数据库,发现PropertyValuesString为空。
证明了以前的想法。

2011-5-16 22:28 danny

6、自动保存用户配置
注意两点:
web.config
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
    <profile automaticSaveEnabled="false">
      <properties>
        <add name="ShoppingCart" type="DannyExample.ShoppingCart" serializeAs="Binary"/>
      </properties>
    </profile>
  </system.web>
</configuration>

automaticSaveEnabled="false"

Glabal.asax
 public void Profile_ProfileAutoSaveing(object s, ProfileAutoSaveEventArgs e)
    {
        if (Profile.ShoppingCart.HasChanged)
            e.ContinueWithProfileAutoSave = true;
        else
            e.ContinueWithProfileAutoSave = false;
    }    


同时要修改ShoppingCart类,具有HasChanged属性

7、从组件访问用户配置
可以在组件内引用HttpContext.Profile属性访问Profile对象。
P134

8、使用配置文件管理器
用户配置数据在用户离开应用程序时不会消失。过一段时间后,Profile对象保存的大量数据就可能变很大。如果允许匿名用户配置,情况就更糟。
ProfileManager类,用于删除旧的用户配置。
DeleteInactiveProfiles  --用于删除从某一日期后不再使用的用户配置
DeleteProfile             --用于删除与指定用户名关联的用户配置
DeleteProfiles            --用于删除和一个用户数组或ProfileInfo对象数组中的用户对象关联的用户配置
FindInactiveProfilesByUserName  --用于返回指定用户名关联的并且从某一日期之后不再活动的所有用户配置
FindProfilesByUserName     --用于获得与指定用户名关联的所有用户配置
GetAllInactiveProfiles          --用于返回某一日期之后不再活动的所有用户配置
GetAllProfiles                    --用于返回每一个用户配置
GetNumberOfInactiveProfiles  --用于返回指定的日期后不再活动的指定数量的用户配置
GetNumberOfProfiles           --用于返回指定数量的用户配置

ManagerProfiles.aspx
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    DateTime inactiveDate = DateTime.Now.AddMonths(-3);

    protected void Page_PreRender(object sender, EventArgs e)
    {
        lblProfiles.Text = ProfileManager.GetNumberOfProfiles(ProfileAuthenticationOption.All).ToString();
        lblInactiveProfiles.Text = ProfileManager.GetNumberOfInactiveProfiles(ProfileAuthenticationOption.All, inactiveDate).ToString();

    }

    protected void btnDelete_Click(object sender, EventArgs e)
    {
        int results = ProfileManager.DeleteInactiveProfiles(ProfileAuthenticationOption.All, inactiveDate);
        lblResults.Text = String.Format("{0} Profiles deleted!", results);
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Total Profiles:
        <asp:Label ID="lblProfiles" runat="server" />
        <br />
        Inactive Profiles:
        <asp:Label ID="lblInactiveProfiles" runat="server" />
        <br />
        <br />
        <asp:Button ID="btnDelete" Text="Delete Inactive Profiles" runat="server" OnClick="btnDelete_Click" />
        <br />
        <asp:Label ID="lblResults" EnableViewState="false" runat="server" />
    </div>
    </form>
</body>
</html>


2011-5-17 10:00 danny

9、配置用户配置提供程序
默认情况下,用户配置数据保存在应用程序的App_Data文件夹下的名叫ASPNETDB.mdf的数据库中。
P138

10、创建自定义用户配置提供程序
P138-P142

2011-5-17 10:18 danny



分享到:
评论

相关推荐

    创建默认的自定义windows用户配置文件

    1. **以管理员身份登录**:首先需要使用管理员账户登录到计算机,这是因为创建和修改用户配置文件的操作需要相应的权限。 2. **创建本地用户账户**:创建一个新的本地用户账户,用于后续自定义配置文件的准备。 **...

    域用户配置文件的漫游配置

    域用户配置文件的漫游配置是一项重要的IT管理实践,它主要目标是提供一致的用户体验和便于数据管理。通过漫游配置,用户无论在哪台域成员计算机上登录,其桌面环境、个人设置等都能保持一致,同时也使得用户数据的...

    Solaris 10用户管理入门用户配置文件与命令

    Solaris 10用户管理入门用户配置文件与命令

    Win10精简-710 Ntlite精减配置文件,用于精减WIn10系统噢。稳定版本!

    使用这个文件,用户无需手动操作Ntlite的每一个选项,只需导入该配置文件,Ntlite就能按照预设的规则自动完成精简工作。 在使用这个配置文件时,需要注意以下几点: 1. **备份**:在精简系统前,务必备份原始的...

    WIN10专业版64位22H2正式版适度精简母盘NTLite精简配置文件

    本文将深入探讨Windows 10专业版64位22H2(又称为22H2更新)和Windows 11专业版64位22H2版本的精简配置文件,以及如何使用NTLite工具进行系统定制。 **Windows 10/11 22H2更新** 22H2是微软发布的Windows 10和...

    win远程多用户rdpwrap配置文件(10.0.19043.985)

    win10多用户、远程、rdp配置文件 配置文件已测试 能正常使用

    Windows 10远程桌面服务配置文件rdpwrap.10.0.19041.1741.zip

    Windows远程桌面服务RDPWrap配置文件,适用于Windows 10 10.0....本账号会不定期更新支持最新Windows 10版本的rdpwrap配置文件,高于10.0.19041.1741版本的Windows 10用户,请加粉关注以获取最新的rdpwrap配置文件。

    win远程多用户rdpwrap配置文件(10.0.19042.1052)

    win10多用户、远程、rdp配置文件 配置文件已测试 能正常使用

    安装Win10系统 无人值守配置文件

    安装Win10系统 无人值守配置文件。 安装好系统默认是administrator用户

    Windows 10远程桌面服务配置文件rdpwrap.10.0.19041.1566.zip

    Windows远程桌面服务RDPWrap配置文件,适用于Windows 10 10.0....本账号会不定期更新支持最新Windows 10版本的rdpwrap配置文件,高于10.0.19041.1566版本的Windows 10用户,请加粉或关注以获取最新的rdpwrap配置文件。

    win远程多用户rdpwrap配置文件(10.0.17763.771)

    标题 "win远程多用户rdpwrap配置文件(10.0.17763.771)" 涉及的是Windows操作系统中的一种技术,主要用于实现多用户同时远程访问同一台计算机。这个配置文件是为Windows 10版本10.0.17763.771定制的,该版本是...

    凯立德配置文件修改工具

    凯立德配置文件修改工具是一款专门针对凯立德地图软件的辅助工具,它允许用户对凯立德地图的配置文件进行个性化调整,以满足不同用户的使用需求。在使用这款工具之前,我们需要了解凯立德地图的基本知识以及配置文件...

    MyEclipse10plugin.用户公用目录下的配置文件.rar

    在MyEclipse10版本中,用户配置文件的管理和使用是提升开发效率的关键之一。本篇文章将深入探讨MyEclipse10plugin用户公用目录下的配置文件,以及它们在实际开发中的作用。 首先,我们来了解MyEclipse的用户配置...

    QT静态读取\保存配置文件类及DEMO

    本主题聚焦于使用QT静态方式读取和保存配置文件,特别是通过封装QSettings类来实现这一功能。QSettings类是QT库中的一个核心组件,它允许程序在本地存储和检索配置信息,如用户偏好、应用程序设置等。 QSettings类...

    win远程多用户rdpwrap配置文件(10.0.19041.1052)

    win10多用户、远程、rdp配置文件 配置文件已测试 能正常使用

    vim配置文件,vim配置文件

    它的高度可定制性是其一大特色,用户可以通过配置文件来调整编辑器的行为以适应个人的工作习惯。本压缩包文件“vim-config”很可能包含了用于自定义Vim环境的设置。 在Linux环境中,Vim配置文件通常位于用户的主...

    配置文件检测程序

    10. **文档和示例**:为了便于使用,开发者应提供详细的文档说明配置文件的格式、可接受的设置以及检测程序的用法。 在"CheckConfig"这个文件中,我们可以期待找到实现以上功能的源代码,包括解析器、验证逻辑和...

    Windows远程RDPWrap[10.0.18362.1533]配置文件.ini

    Windows RDPwarp 配置文件主要用于windows远程使用,接触windows系统远程限制和远程用户数量配置,下载该配置文件后,直接替换C:Program FilesRDP *目录下的ini配置文件,然后重启RDP服务即可,如果有不懂得,可以...

    配置文件读写测试

    10. **测试策略**:配置文件读写测试应包括单元测试(针对读写函数)、集成测试(检查整个系统对配置文件的处理)和回归测试(确保每次修改后功能仍正常)。可以编写自动化测试脚本来提高测试覆盖率和效率。 通过...

Global site tag (gtag.js) - Google Analytics