저는 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();
}
}
}
}
흥미로운 질문을. 새로운 유니버설 공급자를 사용해 보셨습니까? http : //www.hanselman 같은 httpcontext 문제는 있지만 가치가있을 수 있습니다.co.kr/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx –
정말 잘 했어, 정말 고마워! –
다행이었습니다 ... 질문을 닫을 수 있도록 답변을 게시합니다 :) –