在EF 5 Code First中使用ASP.NET默认成员资格时未找到连接字符串“DefaultConnection”

时间:2013-05-26 10:00:03

标签: ef-code-first asp.net-membership entity-framework-5

我使用EF 5 Code First创建了我的应用程序域模型。然后我尝试通过运行aspnet_reqsql.exe实用程序在我的数据库中生成成员资格表来与ASP.NET默认成员资格提供程序挂钩。

这似乎工作正常,因为当我在SQL Management Studio中检查数据库时,所有的成员资格表都与我的Code First表一起存在。

现在,我们运行我的应用程序,一切似乎都很好,它加载,我可以浏览页面。但是,只要我浏览需要会员资格的内容(例如登录页面),应用程序就会中断。我得到了死亡的黄色屏幕,其中包含以下信息:

Server Error in '/' Application.

Connection string "DefaultConnection" was not found.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Connection string "DefaultConnection" was not found.

Source File: c:\Users\XXX\Documents\Visual Studio 2012\Projects\YourApp\YourApp\Filters\InitializeSimpleMembershipAttribute.cs    Line: 41

用户有this thread遇到类似的问题,但他的解决方案已经由我实现,我必须在web.config中注释掉已经存在的连接字符串。我已经做到了,但仍然没有成功。

我做错了什么?我非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:2)

在您致电InitializeSimpleMembershipAttribute的情况下,如果您仍然有"DefaultConnection"作为第一个参数,那么您需要将其更改为您希望它使用的连接的名称。

答案 1 :(得分:0)

我设法解决了所有感谢理查德。这是我做的:

我打开了我的AccountController,在这个类的顶部,你会看到这个(如果使用ASP.NET MVC4):

[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller
{
    // all code for controller here.
}

然后我右键点击了[InitializeSimpleMembership]并点击了Go To Definition

在那里,如果你滚动到底部,你会看到这样的东西:

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

DefaultConnection属性更改为您为EF Code First Context命名的任何内容,您就可以了。

谢谢Richard。