这个很奇怪,让我觉得我忽略了一些明显的东西。
我有一个带有SQL Server 2008数据库的ASP.NET MVC4应用程序。我首先使用EF代码,首先是代码迁移。对于MVC成员,我使用的是SimpleMembershipProvider。
以下是有关当前状况的一些信息:
这是global.asax中的Application_Start()方法:
protected void Application_Start()
{
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "UserId", "UserName", autoCreateTables: true);
//SeedMembership();
AreaRegistration.RegisterAllAreas();
Database.SetInitializer<PTContext>(null);
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
如果我将此发布到Azure,则会出现此错误:
Login failed for user 'userName'.
This session has been assigned a tracing ID of '95f84d15-0e0c-47f8-bc04-3ae7febf5de8'.
Provide this tracing ID to customer support when you need assistance.
'userName'这是我在Azure上的Sql Server的用户名。
现在是奇怪的部分。如果我像这样注释掉WebSecurity线:
protected void Application_Start()
{
//WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "UserId", "UserName", autoCreateTables: true);
//SeedMembership();
AreaRegistration.RegisterAllAreas();
Database.SetInitializer<PTContext>(null);
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
现在,如果我发布,它会让我到我的登录页面(这是默认的起始页面,所以这是一件好事),但是一旦我登录,我就会收到此错误:
You must call the "WebSecurity.InitializeDatabaseConnection" method
before you call any other method of the "WebSecurity" class.
This call should be placed in an _AppStart.cshtml file in the root of your site.
这个错误并不奇怪,因为我显然使用WebSecurity来处理我的登录和会员资料。
你可以看到这对我来说是一种双输。我的假设是WebSecurity.Init ..()行是引起第一个错误的原因,很明显我的app_start方法中没有代码导致第二个错误。