我正在开发我的第一个真正的MVC项目,我的任务是实现自定义成员资格提供程序。我之前在asp.net 3.5 Web窗体中实现了一个,所以我试图重用一些代码,如果可能的话。 我们的数据来自远程Web服务,因此我不会使用任何标准的成员资格数据库。 基于Web Forms的一些研究和经验,我创建了我的课程:
public class wwdllMembershipProvider : MembershipProvider
我在web.config中添加了以下内容:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<membership defaultProvider="wwdllMembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<add name="wwdllMembershipProvider" type="wwdllMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" writeExceptionsToEventLog="false" enablePasswordChange="true" />
</providers>
</membership>
从那时起,我将尝试查看我的会员提供商中是否存在任何已删除的代码。但是一旦我点击应用程序中的登录链接,我就会收到以下错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错) 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)
来源错误:
Line 55: using (var context = new UsersContext())
Line 56: {
Line 57: if (!context.Database.Exists())
Line 58: {
Line 59: // Create the SimpleMembership database without Entity Framework migration schema
Source File: c:\Users\mburt\Documents\Visual Studio 2012\Projects\eSales\4300\Siriusware.eSales\Filters\InitializeSimpleMembershipAttribute.cs Line: 57
令我感到困惑的是因为我认为简单成员资格提供程序代码不会执行,因为web.config设置会禁用它。
有人能向我指出我做错了什么吗?谢谢!
答案 0 :(得分:2)
默认帐户控制器使用该属性进行修饰。检查是否仍然存在。
(下面的默认MVC4项目代码。)
namespace MvcApplication2.Controllers
{
[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller
{
[...]
}
}