我有一個Web應用程序項目並在web.config中實現了配置文件屬性。當我發現我無法訪問ProfileCommon
對象我用Google搜索,發現了一些解決方法:ProfileCommon在運行時在工作但不在編譯時
- How to Get List of User/Profile from Membership Provider?
- How to assign Profile values?
- "The name ProfileCommon does not exist in the current context"
- http://forums.asp.net/t/1487719.aspx/1?profile+common+non+existant+in+ASP+NET+4+0+
- http://weblogs.asp.net/jgalloway/archive/2008/01/19/writing-a-custom-asp-net-profile-class.aspx
等等上。但是沒有人說我在運行時有一個ProfileCommon
對象。這是我的例子:
<profile enabled="true">
<properties>
<add name="AdminRemark"/>
<add name="FacilityID" type="System.Int64" defaultValue="1"/>
</properties>
</profile>
此行編譯良好,工作正常,但我有硬編碼的屬性名稱:
rcbFacilityID.SelectedValue =
(ProfileBase.Create(userCurrent.UserName) as ProfileBase)
.GetPropertyValue("FacilityID").ToString();
,但此行不會編譯,並給出錯誤:類型或命名空間名稱的ProfileCommon'找不到(是否缺少using指令或程序集引用?)):
rcbFacilityID.SelectedValue =
(ProfileBase.Create(userCurrent.UserName) as ProfileCommon)
.FacilityID.ToString();
但在運行時我試圖在Visual Studio監視窗口中執行的行,它成功了!該事件顯示ProfileBase.Create(userCurrent.UserName)
的類型爲ProfileCommon
而沒有演員。智能感知不起作用,但可以檢查該對象,並且我看到它具有定義的兩個配置文件屬性。
我不介意使用硬編碼的配置文件屬性名稱,如果它是唯一的方式,除了自定義ProfileCommon
類,但我想解釋爲什麼ProfileCommon
類在運行時可用而不是編譯 - 時間?
這是一個奇怪的行爲,但是當我通過實現我的自定義類「KIP_Profile:ProfileBase」修復該問題時,出現錯誤「此配置文件屬性已被定義。」當試圖運行語句'創建(userCurrent.UserName)' – Mentoliptus
如果您已經在類和web.config配置文件部分中定義了相同的屬性,就會發生這種情況。 – loodakrawa
謝謝!從'web.config'文件中刪除屬性定義並在'KIP_Profile'中移動它們解決了這個問題! – Mentoliptus