Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在筛选器类中初始化SimpleMembership时出现问题_C#_Asp.net_Simplemembership - Fatal编程技术网

C# 在筛选器类中初始化SimpleMembership时出现问题

C# 在筛选器类中初始化SimpleMembership时出现问题,c#,asp.net,simplemembership,C#,Asp.net,Simplemembership,我正在尝试初始化属性类,但由于某些原因,我正在努力处理结果 我已经在visual studio 2012中创建了MVC4“基本”项目模板。我在项目中创建了带有名称过滤器的文件夹,并创建了类InitializeSimpleMembership.cs。我有主控制器和关联视图,最后我在主控制器类中调用[InitializeSimpleMembership],但没有结果。应用程序未生成所需的表。(注意:我以前创建过数据库) 我正在尝试用最少的代码初始化SimpleMemberShip,这样我就可以理解它

我正在尝试初始化属性类,但由于某些原因,我正在努力处理结果

我已经在visual studio 2012中创建了MVC4“基本”项目模板。我在项目中创建了带有名称过滤器的文件夹,并创建了类InitializeSimpleMembership.cs。我有主控制器和关联视图,最后我在主控制器类中调用[InitializeSimpleMembership],但没有结果。应用程序未生成所需的表。(注意:我以前创建过数据库)

我正在尝试用最少的代码初始化SimpleMemberShip,这样我就可以理解它,并使它变得复杂

在筛选器文件夹中 家庭控制器 Web.config;连接字符串
我没有看到任何调用SimpleMembershipInitializer构造函数的内容,该构造函数具有初始化数据库的代码。为什么不将该代码放入InitializeSimpleMembership的默认构造函数中呢


我建议只将初始化放在Global.asax应用程序\u Start方法中,而不是使用过滤器类,因为您将其放在HomeController中。MVC 4 Internet模板在AccountController上使用筛选器的原因是,只有在使用安全性时,才用于延迟加载安全性。如果您总是想初始化它,只需使用Global.asax。有一个很好的描述。

我没有看到任何调用SimpleMembershipInitializer的构造函数的东西,它有初始化数据库的代码。为什么不将该代码放入InitializeSimpleMembership的默认构造函数中呢


我建议只将初始化放在Global.asax应用程序\u Start方法中,而不是使用过滤器类,因为您将其放在HomeController中。MVC 4 Internet模板在AccountController上使用筛选器的原因是,只有在使用安全性时,才用于延迟加载安全性。如果您总是想初始化它,只需使用Global.asax。有一个很好的描述。

是的,我意识到我没有调用构造函数。我希望继续使用过滤器名称空间,因为最终我将添加延迟加载。只是暂时尝试将事物分解成最小的部分,以便我能够理解安全行为

另外,我也缺少一些实现。。。但现在让系统运行!这里我有一个解决这个问题的方法

过滤器文件夹 }

网络配置
我在代码运行之前创建了一个数据库,因为我不希望系统在找不到数据库时创建一个数据库。虽然它是在简单成员数据库连接初始化阶段创建表。

是的,我意识到我没有调用构造函数。我希望继续使用过滤器名称空间,因为最终我将添加延迟加载。只是暂时尝试将事物分解成最小的部分,以便我能够理解安全行为

另外,我也缺少一些实现。。。但现在让系统运行!这里我有一个解决这个问题的方法

过滤器文件夹 }

网络配置 我在代码运行之前创建了一个数据库,因为我不希望系统在找不到数据库时创建一个数据库。虽然它是在简单成员数据库连接初始化阶段创建表

using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Threading;
using System.Web.Mvc;
using WebMatrix.WebData;
using SimpleLogin_System_04.Models;

namespace SimpleLogin_System_04.Filters
 {
  public class InitializeSimpleMembership : ActionFilterAttribute
  {
    private class SimpleMembershipInitializer
    {
        public SimpleMembershipInitializer()
        { 
          try
            {                  
              WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
            }
            catch (Exception ex)
            {
               throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, ex);
            }
        }
    }
  }
}
namespace SimpleLogin_System_04.Controllers
 {
[InitializeSimpleMembership]
public class HomeController : Controller
{    
    public ActionResult Index()
    {
        return View();
    }
}
}
<connectionStrings>
  <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=dd3;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\dd3.mdf" />
</connectionStrings>
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Threading;
using System.Web.Mvc;
using WebMatrix.WebData;
using SimpleLogin_System_04.Models;

namespace SimpleLogin_System_04.Filters
{
public class InitializeSimpleMembership : ActionFilterAttribute
{
    public InitializeSimpleMembership()
    {
        try
        {
            if (!WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
            }
        }
        catch (Exception ex)
        {
            throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
        }
    }
}
<connectionStrings>
  <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=DB4;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\DB4.mdf" />
</connectionStrings>

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
  </providers>
</membership>

<roleManager enabled="true">
  <providers>
    <add name="DefaultRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller