2013-02-15 96 views
0

我的MVC应用程序完美的作品在开发机器,但是当我部署到生产服务器它总是给各种错误消息,例如:ASP.NET MVC 4 + SimpleMembershipProvider

你必须调用“WebSecurity。 InitializeDatabaseConnection“方法,然后调用”WebSecurity“类的任何其他方法。此调用应放置在您网站根目录的_AppStart.cshtml文件中。

WebMatrix.WebData've改变了版本为2.0,设置复制本地= true来,和我复制这些行到web.config中:

<roleManager enabled="true" defaultProvider="SimpleRoleProvider"> 
<providers> 
    <clear/> 
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider,WebMatrix.WebData"/> 
</providers> 
</roleManager> 
<membership defaultProvider="SimpleMembershipProvider"> 
<providers> 
<clear/> 
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
</providers> 
</membership> 

我不知道是什么原因。 我需要帮助。

+0

你叫从_AppStart.cshtml WebSecurity.InitializeDatabaseConnection文件? – Andorbal 2013-02-15 21:19:43

+0

@Andorbal他正在使用MVC应用程序,而不是网页。当你使用MVC时,'_AppStart.cshtml'不存在,至少不是'MVC3或MVC4' – Komengem 2013-02-15 21:51:55

+0

我把初始化代码放在Global.asax的Application_Start()方法中,但错误是一样的。否则代码是一样的。 – sada 2013-02-15 21:57:04

回答

0

如果您正在使用simpleMembership工作,我会鼓励你看看这个BlogPost,这是在我的情况真的有帮助,因为它让你在所有成员表的控制,也使他们部分你的实体的框架模型

无论如何,您的MVC项目的Filters目录中应该有一个InitializeSimpleMembershipAttribute.cs文件。转到该文件并采取此:

if (!WebSecurity.Initialized) 
      WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); 

并将其放入Global.asax.cs文件。这样它将始终被初始化。你这样做之后还,有没有需要保持InitializeSimpleMembershipAttribute.cs,我会建议你采取[InitializeSimpleMembership]了你AcccountController

+0

我这样做了,但现在这个错误消息出现在HomeController的Index方法的第一行:“对象引用未设置为对象的实例。” – sada 2013-02-15 22:02:05

+0

@sada按照我发布的博客的链接,你可能需要重新开始你正在做的事,并做对了。顺便说一句,那个错误只是表示你正试图调用一个'null'条目。 – Komengem 2013-02-15 22:06:36

+0

谢谢你的回答。最后,发现安装出错了。 – sada 2013-02-15 23:09:28