在ASP.NET 4中找不到配置文件属性

时间:2012-09-10 15:46:12

标签: asp.net asp.net-4.0 asp.net-profiles

我正在使用ASP.NET 4开箱即用的表单身份验证方法。 我想为用户的个人资料添加一些自定义属性,因此我将以下代码添加到我的web.config文件中:

<profile enabled="true">

  <providers>
    <clear/>
    <add name="AspNetSqlProfileProvider" 
         type="System.Web.Profile.SqlProfileProvider" 
         connectionStringName="ApplicationServices" 
         applicationName="/"/>
  </providers> 

  <properties>        
    <add name="DisplayName"/>
    <add name="PhoneNumber"/>
    <add name="FaxNumber"/>
    <add name="Email"/>
  </properties>

</profile>

但是当我尝试使用类似的东西访问aspx文件中的任何这些属性时

TextBox.Text = Profile.DisplayName;

我在DisplayName下面有一个红线,它说的是ProjectName.Profile does not contain a definition for DisplayName

我现在在网上搜了好几个小时了,我很无能为力。关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:0)

尝试在配置文件节点上设置defaultProvider属性

<profile defaultProvider="AspNetSqlProfileProvider">

我假设您还为提供程序定义了成员资格部分,并且连接字符串正确吗?

如果没有,您可能需要

<membership defaultProvider="SqlProvider" 
      userIsOnlineTimeWindow="15">
      <providers>
        <clear/>
        <add name="SqlProvider" 
          type="System.Web.Security.SqlMembershipProvider" 
          connectionStringName="SqlServices"
          applicationName="SampleApplication"
          enablePasswordRetrieval="true"
          enablePasswordReset="true"
          passwordFormat="Encrypted"
          requiresQuestionAndAnswer="true" />
      </providers>
    </membership>

 <connectionStrings>
    <add name="SqlServices" connectionString=
      "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
  </connectionStrings>

配置的其余部分看起来不错。

答案 1 :(得分:0)

好吧,我找到了!

看起来“Web应用程序”和“网站”之间的差异之一就是它处理配置文件的方式。网站能够读取web.config文件并动态创建配置文件类,而Web应用程序则不能。据我所知,如果使用Web应用程序项目,应该创建自定义配置文件类。

可在此处找到更多信息:http://www.codersbarn.com/post/2008/06/aspnet-web-site-versus-web-application-project.aspx