0

Web アプリケーションでプロファイル機能を使用しています。http://www.codeproject.com/Articles/290929/Using-ASP-Net-Profile-Feature-in-a-Web-Applicationで役立つ記事を入手しました。この記事によるとweb.config、カスタム プロファイル クラスであるプロファイル情報クラスである my をコーディングしました。以下は私のコードです。

マイコード

web.config

<profile enabled="true" inherits="app_DeliverMatic.UserProfile" defaultProvider="ProfileProvider">
  <providers >
    <add name="ProfileProvider" applicationName="delivermatic" connectionStringName="LocalSqlServer" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  </providers>
</profile> 

<connectionStrings>
    <clear/>
    <add name="LocalSqlServer" connectionString="Data Source=(local);Initial Catalog=mydb;Persist Security Info=True;User ID=uid;Password=pass;"/>
</connectionStrings>  

ユーザープロファイル.vb

Public Class UserProfile
    Inherits ProfileBase

    Public ReadOnly Property UserProfileInfo As UserProfileInfo
        Get
            Return DirectCast(GetPropertyValue("UserProfileInfo"), UserProfileInfo)
        End Get
    End Property

    Public Shared Function GetProfile() As UserProfile
        Return DirectCast(HttpContext.Current.Profile, UserProfile)
    End Function

    Public Shared Function GetProfile(ByVal UserName As String) As UserProfile
        Return DirectCast(Create(UserName), UserProfile)
    End Function

End Class  

UserProfileInfo.vb

<Serializable()>
Public Class UserProfileInfo
    Dim _Name As String
    Dim _Company As String
    Dim _Address1 As String
    Dim _Address2 As String
    Dim _City As String
    Dim _State As String
    Dim _Country As String
    Dim _Zip As String
    Dim _PhoneNo As String
    Dim _Mobile As String
    Dim _FaxNo As String
    Dim _Website As String
    Dim _Registration_Email As String

    Public Property Name As String
        Set(ByVal value As String)
            _Name = value
        End Set
        Get
            Return _Name
        End Get
    End Property
    Public Property Company As String
        Set(ByVal value As String)
            _Company = value
        End Set
        Get
            Return _Company
        End Get
    End Property
    Public Property Address1 As String
        Set(ByVal value As String)
            _Address1 = value
        End Set
        Get
            Return _Address1
        End Get
    End Property
    Public Property Address2 As String
        Set(ByVal value As String)
            _Address2 = value
        End Set
        Get
            Return _Address2
        End Get
    End Property
    Public Property City As String
        Set(ByVal value As String)
            _City = value
        End Set
        Get
            Return _City
        End Get
    End Property
    Public Property State As String
        Set(ByVal value As String)
            _State = value
        End Set
        Get
            Return _State
        End Get
    End Property
    Public Property Country As String
        Set(ByVal value As String)
            _Country = value
        End Set
        Get
            Return _Country
        End Get
    End Property
    Public Property Zip As String
        Set(ByVal value As String)
            _Zip = value
        End Set
        Get
            Return _Zip
        End Get
    End Property
    Public Property PhoneNo As String
        Set(ByVal value As String)
            _PhoneNo = value
        End Set
        Get
            Return _PhoneNo
        End Get
    End Property
    Public Property Mobile As String
        Set(ByVal value As String)
            _Mobile = value
        End Set
        Get
            Return _Mobile
        End Get
    End Property
    Public Property FaxNo As String
        Set(ByVal value As String)
            _FaxNo = value
        End Set
        Get
            Return _FaxNo
        End Get
    End Property
    Public Property Website As String
        Set(ByVal value As String)
            _Website = value
        End Set
        Get
            Return _Website
        End Get
    End Property
    Public Property Registration_Email As String
        Set(ByVal value As String)
            _Registration_Email = value
        End Set
        Get
            Return _Registration_Email
        End Get
    End Property

    Public Sub New()

    End Sub

    Public Sub New(ByVal Name As String, ByVal Company As String, ByVal Address1 As String, ByVal Address2 As String, ByVal City As String, ByVal State As String, ByVal Country As String, ByVal Zip As String, ByVal PhoneNo As String, ByVal Mobile As String, ByVal FaxNo As String, ByVal Website As String, ByVal Registration_Email As String)
        Me.Name = Name
        Me.Company = Company
        Me.Address1 = Address1
        Me.Address2 = Address2
        Me.City = City
        Me.State = State
        Me.Country = Country
        Me.Zip = Zip
        Me.PhoneNo = PhoneNo
        Me.FaxNo = FaxNo
        Me.Website = Website
        Me.Registration_Email = Registration_Email
    End Sub

End Class  

プロファイル プロバイダーを使用するコード

Dim profile As UserProfile = UserProfile.GetProfile(lblEmail.Text)
With profile.UserProfileInfo
    .Address1 = txtAddress1.Text
    .Address2 = txtAddress2.Text
    .City = txtCity.Text
    profile.Save()
End With

私の問題
上記のコードは問題なく動作します。しかし問題は、接続文字列名を任意の名前に設定すると、エラーが発生することです。接続文字列名を変更するときは、プロファイル プロバイダーの「connectionStringName」属性も新しい名前に設定します。ProfileBase クラスは、connectionStringName が LocalSqlServer に設定されている場合にのみ機能するようです。どうすればこの問題を解決できますか?

4

1 に答える 1

1

解決しました。プロファイル プロバイダーを追加<clear/>する直前に追加されます。

<providers>
  <clear />
  <add name="ProfileProvider" applicationname="delivermatic" connectionstringname="myCon" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
于 2013-01-04T02:54:41.757 に答える