Asp.net 中Profile的配置及使用

本文介绍如何在ASP.NET中使用Profile功能,包括配置WebConfig文件、创建数据库脚本、配置连接字符串和使用Profile属性等内容。

  Asp.Net中有一套与用户相关联的属性设置,可以通过在WebConfig里配置来直接使用,他的作用为

存储和使用唯一与用户对应的信息 展现个人化版本的Web应用程序 用户的唯一身份标识在再次访问时识别用户 Asp.Net Profile提供的跟用户相关的类型都是强类型

首先生成数据库脚本,使用Visual Studio 2005 命令提示,输入命令行aspnet_regsql -A p -sqlexportonly filename

-A:表明增加一个数据库 p:表明生成的是Profile的数据库 -sqlexportonly:表明是倒出sql脚本,用其他参数可以直接创建数据库,具体的说明可以参看aspnet_regsql的帮助说明 filename:保存的文件名 现在数据库创建好了,里面有4张表aspnet_Application用来存储应用程序的相关类型,aspnet_Profile用来保存用户的属性信息,aspnet_SchemaVersion用来存储版本信息,aspnet_User用来保存用户信息。可以从这几张表可以看到,多个应用程序可以用同一个数据库来表示用户信息。

更多命令请参看:http://blog.youkuaiyun.com/dezwen/archive/2007/07/25/1708060.aspx (这个一定要配,否则,会出现VS2005无法远程连接或是找不到……存储过程之类的错误提示,页面无法正常运行)

下面是如何来配置WebConfig来支持Profile

首先配置连接字符串

  

然后在system.web节点下添加profile节点

  

详细说明一下。automaticSaveEnalbed="true",表明用户在提交数据之后,自动保存用户属性。properties节点下面就是用户需要配置的自己的用户属性,group表明这是一个组,相当与这个属性是一个对象,他保存其他的信息。在每个属性后面都有一个允许匿名用户访问的属性,这个是默认选项,可以不用输入。有时候配置了系统报需要使用匿名授权模式,那么在system.web节点下添加就可以解决这个问题。

下面是使用Asp.Net的Profile属性,不涉及到Ajax。

首先让用户登陆,那么我们需要让系统记录这个用户,并把他设置为登陆状态。

FormsAuthentication.SetAuthCookie(this.txtUserName.Text, false); 第二个参数表明是否跨浏览器保持会话状态,退出登陆使用

FormsAuthentication.SignOut(); 下面是读取Profile

 

我们首先判断Profile里面的Age属性是否为0,其实可以判断任何一个属性。然后将Profile里面的属性给一一赋值到显示属性上。如果碰到了group节点上的属性,可以象使用对象里的属性一样使用。

然后是保存Profile

 

 

可以看到上面这段代码我们没有显视的保存Profile,当一个Profile的属性改变时,提交到服务器,Profile的属性会自动保存到数据库。碰到group节点的使用方法也一样。

这就是简单的Profile的在Asp.Net里面的应用。

下面我们来看看在Asp.Net Ajax里面怎么使用Profile。首先我们在system.web.extensions节点下的scripting节点下的webServices节点下添加一个节点

 

 

 

 

readAccessProperties时允许读取的Profile属性。writeAccessProperties时允许写入的Profile属性

然后我们在页面上需要添加一个ScriptManager

 

 

 

LoadProperties表明预加载的Profile的属性。

首先时读取Profile的属性

 

 

 

Sys.Services.ProfileService.load的方法详细说明如下

Sys.Services.ProfileService.load( propertyNames, //需要加载的Profile名,null表示全取 loadCompletedCallback, //加载成功的回调函数 failedCallback, //加载失败的回调函数 userContext// 可以随意指定的上下文对象 );

读取完成之后

 

 

Sys.Service.ProfileService.properties存储的就是Profile里面的属性,可以直接使用Name、Age等属性。loadCompleted是存在参数的,这里我们只是省略了。

function loadCompletedCallback( number, // 本次加载的Profile数量 userContext, // 用户随意指定的上下文对象 methodName//即"Sys.Services.ProfileService.load" )

读取失败的回调函数

function failedCallback( error, // 错误对象 userContext, // 用户随意指定的上下文对象 methodName//即"Sys.Services.ProfileService.load" )

然后就是保存Profile的属性

 

 

碰到象Address这样的group标签标明的属性可以使用JSon字符串来设置,并且使用properties.save方法来转换城Address的属性

properites.Address = {City : “Shanghai”, Street: “People Square”, PostalCode: “20002”}; properties.save(…); 注意,就算在webconfig里设置了自动保存的属性,在ajax里面也不会自动保存,需要调用Sys.Services.ProfileService.save方法进行保存。save方法的完整签名如下

Sys.Services.ProfileService.save( propertyNames, //需要保存的Profile名,null表示全取 saveCompletedCallback, //保存成功的回调函数 failedCallback, //加载失败的回调函数 userContext// 可以随意指定的上下文对象 );

保存成功的回调函数的完整签名

function saveCompletedCallback( number, // 本次保存的Profile数量 userContext, // 用户随意指定的上下文对象 methodName//即“Sys.Services.ProfileService.save” )

保存失败的回调函数的完整签名

function failedCallback( error, // 错误对象 userContext, // 用户随意指定的上下文对象 methodName//即"Sys.Services.ProfileService.save" )

ProfileService的其他属性

get_timeout()/set_timeout(time):设置或得到超时时间 defaultLoadCompletedCallback:默认读取完成属性,指定一个函数地址,函数签名与loadCompletedCallback类似 defaultSaveCompletedCallback:默认保存完成属性,指定一个函数地址,函数签名与saveCompletedCallback类似 defaultFailedCallback:默认读取或保存失败属性,指定一个函数地址,函数签名与failedCallback类似

<think>好的,我现在需要帮助用户了解如何使用ASP.NET开发和配置WebService。根据用户的问题,他们可能是一个刚开始学习ASP.NET的开发人员,想要了解WebService的基本创建和配置步骤。用户可能之前接触过一些相关引用内容,比如如何在ASP.NET中发布WebService,或者如何调用不同的WebService,但现在需要系统的教程。 首先,我需要回顾用户提供的引用内容。引用[1]展示了一个ASP.NET WebService的示例代码,包括WebService类、WebMethod以及配置ScriptService。引用[2]解释了WebService的基本概念,如SOAP、WSDL、UDDI。引用[3]提到了数据库连接字符串的配置,引用[4]和[5]涉及了跨语言调用和返回数据类型的问题。这些引用可以帮助我构建一个涵盖创建、配置、部署和调用的完整指南。 接下来,我应该按照步骤来组织回答。第一步是创建WebService项目,需要说明在Visual Studio中的操作,比如新建项目类型,并引用示例代码。第二步是编写WebService,包括继承WebService类、添加WebMethod,并注意ScriptService属性以便支持AJAX调用。这里需要给出具体的代码示例,如引用[1]中的HelloWorld和Add方法。 第三步是配置WebService,涉及Web.config的设置,比如HTTP处理程序和协议,确保服务可以通过SOAP访问。同时,数据库连接字符串的配置也很重要,如引用[3]提到的ConnectionStrings部分。需要说明如何添加和引用这些配置。 第四步是部署,可能包括IIS的配置,确保用户知道如何发布服务到服务器。第五步是调用WebService,这里可以分服务端和客户端调用,比如引用[4]中的Java例子和引用[5]中的AJAX调用,特别是如何处理返回的数据类型,比如DataTable转换为数组的问题。 此外,需要强调注意事项,比如启用ScriptService支持AJAX,处理跨域问题,以及异常处理的重要性。用户可能在实际应用中遇到这些问题,提前说明可以避免常见错误。 最后,生成相关问题时要围绕用户可能进一步的需求,比如安全性、复杂数据返回、跨语言调用和性能优化。这些问题可以帮助用户深入学习和解决实际开发中的挑战。 确保整个回答结构清晰,步骤明确,代码示例正确,并且符合用户的中文要求。同时,正确引用提供的参考资料,如引用[1]到[5],在适当的位置添加注释,比如ScriptService的配置数据库连接字符串的设置。需要避免使用Markdown,保持自然的口语化表达,但思考过程要详细,覆盖所有必要的步骤和考虑因素。</think>以下是如何使用ASP.NET开发和配置WebService的分步指南,结合关键代码示例和配置说明: ### 一、创建WebService项目 1. 在Visual Studio中新建 **ASP.NET Web应用程序**,选择空模板 2. 右键项目 → 添加 → 新建项 → 选择 **Web服务(ASMX)**[^1] ### 二、编写WebService核心代码 ```csharp using System.Web.Services; namespace MyWebService { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.Web.Script.Services.ScriptService] // 启用AJAX支持[^1][^5] public class Calculator : WebService { [WebMethod] public int Add(int a, int b) => a + b; [WebMethod] public DataTable GetUserData() { // 数据库连接配置参考[^3] using(var conn = new SqlConnection( ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString)) { return new SqlDataAdapter("SELECT * FROM Users", conn) .Fill(new DataTable()); } } } } ``` ### 三、关键配置步骤 1. **Web.config配置** ```xml <configuration> <system.web> <webServices> <protocols> <add name="HttpSoap"/> <!-- 启用SOAP协议支持[^2] --> </protocols> </webServices> </system.web> <connectionStrings> <add name="MyDB" connectionString="Server=.;Database=Test;Integrated Security=True;" providerName="System.Data.SqlClient"/> <!-- 数据库配置[^3] --> </connectionStrings> </configuration> ``` 2. **跨域支持配置**(CORS) ```xml <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol> </system.webServer> ``` ### 四、服务部署与访问 1. **IIS部署**:发布到IIS需确保安装ASP.NET功能模块 2. **访问端点**:`http://yourserver/Calculator.asmx` 将显示自动生成的WSDL文档[^2] ### 五、客户端调用示例 **JavaScript调用(AJAX)**: ```javascript $.ajax({ type: "POST", url: "Calculator.asmx/Add", data: JSON.stringify({a:5, b:3}), contentType: "application/json", success: function(response) { console.log(response.d); // 输出8 } }); ``` *注:返回的DataTable会被序列化为JSON数组[^5]* ### 六、注意事项 1. 复杂类型处理需配置`[ScriptMethod(ResponseFormat=ResponseFormat.Json)]` 2. 异常处理建议使用`[WebMethod(EnableSession=true)]`结合try-catch块 3. 生产环境应限制跨域访问权限,避免使用`Access-Control-Allow-Origin: *`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值