如何解决asp.net mvc自定义配置文件提供程序
| 我希望在asp.net mvc 3应用程序中具有自定义配置文件提供程序。问题是,我不想使用由ASP.NET成员资格/角色/配置文件提供程序生成的默认数据库,主要是因为已经使用WebService进行了身份验证并且数据库已经存在。 我想用用户个人资料属性来填充它们并在网站的不同区域内使用。 我看了这个示例(如何分配配置文件值?),但出现此错误: 尝试为文件附加自动命名的数据库 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应用程序)
解决方法
我认为您也必须编写自己的MemberShip Provider。您的web.config引用默认的asp.net成员资格提供程序。如何编写会员资格提供者,您可以在此处找到自定义会员资格提供者
默认成员资格提供程序使用连接字符串到本地安装的SQL Express数据库中,这会导致您出错。
您的web.config看起来像这样:
<membership defaultProvider=\"MyCustomMembershipProvider\">
<providers>
<clear />
<add name=\"MyCustomMembershipProvider\"
type=\"FWMembership.Membership.MyCustomMembershipProvider\"
enablePasswordRetrieval=\"true\"
enablePasswordReset=\"true\"
requiresQuestionAndAnswer=\"false\"
requiresUniqueEmail=\"true\"
passwordFormat=\"Clear\"/>
</providers>
</membership>
<profile defaultProvider=\"MyProfileProvider\" enabled=\"true\">
<providers>
<clear/>
<add name=\"MyProfileProvider\" type=\"FWMembership.Membership.FWProfileProvider\" connectionStringName=\"ApplicationServices\" applicationName=\"/\" />
</providers>
</profile>
希望这可以帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。