【发布时间】:2011-05-26 15:45:34
【问题描述】:
我想在我的 asp.net mvc 3 应用程序中拥有自定义配置文件提供程序。问题是,我不想使用由 ASP.NET Membership/Role/Profile 提供程序生成的默认 DB,主要是因为 WebService 已经完成了身份验证,并且 DB 已经存在。
我想要用户配置文件属性以填充它们并在网站的不同区域中使用。
我查看了这个示例 (How to assign Profile values?),但我收到了这个错误:
尝试为文件附加自动命名的数据库 C:\Projects\FWManager\App_Data\aspnetdb.mdf 失败。一个数据库 存在同名文件,或者指定的文件无法打开,或者是 位于 UNC 共享上。
这是 web.config
<profile inherits="FWMembership.Membership.FWProfileProvider" defaultProvider="AspNetSqlProfileProvider" automaticSaveEnabled="false" enabled="true">
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
</profile>
这是我的自定义类
public class FWProfileProvider : ProfileBase
{
[SettingsAllowAnonymous(false)]
public string FirstName
{
get { return base["FirstName"] as string; }
set { base["FirstName"] = value; }
}
[SettingsAllowAnonymous(false)]
public string LastName
{
get { return base["LastName"] as string; }
set { base["LastName"] = value; }
}
[SettingsAllowAnonymous(false)]
public int? UserID
{
get { return base["UserID"] as int?; }
set { base["UserID"] = value; }
}
[SettingsAllowAnonymous(false)]
public string UserCompany
{
get { return base["UserCompany"] as string; }
set { base["UserCompany"] = value; }
}
[SettingsAllowAnonymous(false)]
public string Email
{
get { return base["Email"] as string; }
set { base["Email"] = value; }
}
public StringCollection Entitlements
{
get { return base["Entitlements"] as StringCollection; }
set { base["Entitlements"] = value; }
}
public string username;
public FWProfileProvider()
{
}
public FWProfileProvider(string username)
{
this.username = username;
}
static public FWProfileProvider CurrentUser
{
get
{
return (FWProfileProvider)
(ProfileBase.Create("Joe"));
}
}
}
关键是要避免使用 asp.net 默认成员表。 有什么想法吗?
编辑: 忘记添加 - 此 Web 应用程序,但配置文件提供程序放置在同一解决方案中的类库项目中: 解决方案 |->FWProfile(类库项目) |->UI (asp.net mvc 3 web 应用)
【问题讨论】:
标签: asp.net asp.net-mvc-3 asp.net-profiles