1

我使用 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

有一个用户的这个线程遇到了类似的问题,但是我已经实现了他的解决方案,事实上我必须注释掉web.config. 我已经这样做了,但仍然没有成功。

我究竟做错了什么?

4

2 回答 2

2

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

于 2013-05-26T10:08:35.137 回答
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 代码优先上下文的任何内容,您就可以开始了。

谢谢理查德。

于 2013-05-26T10:31:10.893 回答