1

我正在开发我的第一个真正的 MVC 项目,我的任务是实现一个自定义成员资格提供程序。我之前在 asp.net 3.5 Web Forms 中实现过一个,所以如果可能的话,我会尝试重用其中的一些代码。我们的数据来自远程 Web 服务,因此我不会使用任何标准的会员数据库。基于对 Web 表单的一些研究和经验,我创建了我的课程:

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

这让我感到困惑,因为我不认为 Simple Membership Provider 代码会因为 web.config 设置禁用它而执行。

有人可以向我指出我做错了什么吗?谢谢!

4

1 回答 1

2

默认帐户控制器就是用那个属性装饰的。检查它是否仍然存在。

(下面是默认的 MVC4 项目代码。)

namespace MvcApplication2.Controllers
{
    [Authorize]
    [InitializeSimpleMembership]
    public class AccountController : Controller
    {
        [...]
    }
}
于 2013-04-18T17:38:18.790 回答