在项目引用里面,找到WebMatrix.WebData和WebMatrix.Data,右击,选择属性,将“复制本地”设置为true。新建的MVC4网络应用程序模板已经有了,当自己去实现就会有各种问题了。
引入命名空间是必须的
然后还要定义并在控制器上面调用过滤器。
配置web.config:
<profile defaultProvider=“SimpleProfileProvider“>
<add name=“SimpleProfileProvider“ type=“WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData“
connectionStringName=“DefaultConnection“ applicationName=“/“ />
</providers>
</profile>
<membership defaultProvider=“SimpleMembershipProvider“>
<providers>
<add name=“SimpleMembershipProvider“ type=“WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData“ />
</providers>
</membership>
<roleManager defaultProvider=“SimpleRoleProvider“>
<providers>
<add name=“SimpleRoleProvider“ type=“WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData“/>
</providers>
</roleManager>
这个不加入配置文件的话会报错,比如:
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Configuration.Provider.ProviderException: 未启用角色管理器功能。
和配置有关的还有EDMX的引入, 更改模型命名空间一定不要忘了在App.Config中更改.csdl/.ssdl/.msl三个文件的路径,这几个文件包含了EDMX的路径。因为连接字符串和以前的格式大不一样了。
否则就会出这个错误:
无法加载指定的元数据资源。
您必须先调用“WebSecurity.InitializeDatabaseConnection”方法,然后再调用"WebSecurity"类的任何其他方法。
这个是伪异常。重新点调试就行。
遇到很蛋疼的错误是:“未能加载文件或程序集“WebMatrix.WebData”或它的某一个依赖项”,解决方法是在项目引用里面,找到WebMatrix.WebData和WebMatrix.Data,右击,选择属性,将“复制本地”设置为true。
参考资料:
“未能加载文件或程序集“WebMatrix.WebData”或它的某一个依赖项”的解决方法
ADO.NET Entity Framework 之“无法加载指定的元数据资源。”
上文的渣渣翻译版:
http://blog.csdn.net/sat472291519/article/details/12039685
这位同学用反编译去理解 simplemembership
http://www.cnblogs.com/fatbird/p/Mvc4_defaultAuthorize.html
http://www.cnblogs.com/fatbird/p/Mvc4_defaultWebsecurity.html
这位同学用案例去讲,参考价值最高.亲测下改写连接字符串后就可以用了.他会自己生成一个membership数据库。
http://www.tystudio.net/category/dotnet/dotnet-membership/
最后这个是
ASP.NET MVC 學習資源整理