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 に設定されている場合にのみ機能するようです。どうすればこの問題を解決できますか?