我的解决方案的结构如下:
我正在使用ÀSP.NET MVC 4
,而DAL
项目正在使用Entity Framework 5
和Code First
工作流程。 MVC
模板设置了<profile defaultProvider="DefaultProfileProvider">
,我需要实现SingleMemebershipProvider
(默认情况下不创建包含它的新模板)。我找到了几个关于这个主题的教程,但对于我的场景,我想知道SingleMemebrshipProvider
的位置在哪里。
我想使用现有的数据库,而且我已经读过,可以映射SingleMemebrshipProvider
使用的任何表格(尽管我打算创建实体以完全用于处理目的) SingleMemebrshipProvider
)但从这个角度来看,似乎逻辑地将SingleMemebrshipProvider
包含在我的DAL
项目中。
然而,它的服务将在NVC
项目中使用,我也想知道如果我尝试在另一个项目中设置SingleMemebrshipProvider
,我是否会破坏任何概念。提供SingleMemebrshipProvider
的默认模板包含控制器 - AccountController
,过滤器 - InitializeSingleMemebrshipProviderAttributes
,模型 - AccountModels
,也许MVC
期望找到这些类。
但是,我不确定采取哪种方法。在以这种方式构建的解决方案中SingleMemebrshipProvider
的位置在哪里? (如果可能的话也解释为什么)。
答案 0 :(得分:1)
如果你问我,它属于ASP.NET MVC项目。我通常会在Web项目中添加一个名为&#34; Security&#34;的新文件夹。我把诸如Membership和Role provider实现之类的东西放在这个文件夹中。
您应该问自己是否打算与其他Web项目共享实现,如果是这样,那么您可以创建一个名为NameOfProject.Web.Mvc的单独项目,并放置所有与mvc相关的内容,如成员资格和角色提供程序, HtmlHelpers,过滤器等。
我使用相同的方法来分离我的REST服务,基于MVC项目中的Web API,将它们移动到名为NameOfProject.Web.Http的单独项目中。 这样,构建另一个客户端非常容易,比如使用与其他客户端相同的服务实现的控制台或winforms应用程序。
这是我的项目结构的一个例子,没有单独的项目。
MVC属性的单独项目示例
我希望这有帮助!
祝你好运!