我创建一个ASP.NET MVC 3.0的网站,有几个基于该网站是否是用于开发,测试或生产不同的数据库初始化的添加配置文件值。我被困在测试初始化,因为我试图让一个测试用户创建。我可以让用户创建好,但是当我尝试添加一些配置文件值时,我得到:System.Web.HttpException:请求在此上下文中不可用。有没有办法在请求不可用的情况下添加配置文件值?自动生成的用户
下面的代码是什么正在运行:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
if (ApplicationServices.GetInitialCatalog() != "tasktracker")
{
Database.SetInitializer(new TaskTrackerDropCreateDatabaseIfModelChanges());
}
else
{
Database.SetInitializer(new TaskTrackerCreateDatabaseIfNotExists());
}
using (var db = new TaskTrackerContext())
{
db.Database.Initialize(false);
}
}
public class TaskTrackerDropCreateDatabaseIfModelChanges : DropCreateDatabaseIfModelChanges<TaskTrackerContext>
{
protected override void Seed(TaskTrackerContext context)
{
// Set up the membership, roles, and profile systems.
ApplicationServices.InstallServices(SqlFeatures.Membership | SqlFeatures.Profile | SqlFeatures.RoleManager);
// Create the default accounts and roles.
if (ApplicationServices.GetInitialCatalog() == "tasktracker_testing")
{
if (Membership.GetUser("testuser", false) == null)
{
Membership.CreateUser("testuser", "password", "[email protected]");
MembershipUser user = Membership.GetUser("testuser", false);
user.IsApproved = true;
var profile = ProfileBase.Create("testuser");
profile.SetPropertyValue("FirstName", "test");
profile.SetPropertyValue("LastName", "user");
profile.SetPropertyValue("TimeZone", "US Mountain Standard Time");
profile.Save();
}
}
}
}
有趣的问题。你看过使用新的通用提供商吗?不知道,如果你会遇到相同的httpcontext问题,但可能值得一看:http://www.hanselman。com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx –
绝对奏效,非常感谢! –
很高兴它的工作...我会张贴答案,所以你可以关闭问题:) –