- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将 IdentityModels.cs 移动到另一个项目,以使网站与数据访问层分开。
我遵循了本教程:http://blog.rebuildall.net/2013/10/22/Moving_ASP_NET_Identity_model_into_another_assembly
并且还在这里检查了这个问题:How to move MVC 5 IdentityModels.cs into a separate assembly
但我仍然感到困惑,因为 IdentityModels 引用了另一个名为 ApplicationUserManager 的类,如下所示:
public class ApplicationUser : IdentityUser
{
public ClaimsIdentity GenerateUserIdentity(ApplicationUserManager manager)
{
//code removed for simplicity
}
}
当我去搜索那个类在哪里时,我在位于以下位置的类中的网站项目中找到了它:App_Start/IdentityConfig.cs
//...More code in the upper section
public class SmsService : IIdentityMessageService
{
public Task SendAsync(IdentityMessage message)
{
// Plug in your SMS service here to send a text message.
return Task.FromResult(0);
}
}
// Configure the application user manager used in this application. UserManager is defined in ASP.NET Identity and is used by the application.
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(IUserStore<ApplicationUser> store)
: base(store)
{
}
//More code bellow this...
现在,这把我带到这里是因为我真的迷失在新的 ASP .NET Identity 框架中,而且我一直在为非常简单的事情而苦苦挣扎,但显然并不那么简单。
如何在不弄乱我的网站的情况下将 IdentityModel 移动到另一个项目?
一些额外的数据:
最佳答案
在阅读了几篇似乎没有包含我需要的全部内容的帖子后,我今天成功地做到了这一点。我希望这对其他人有帮助。
我的目标:将模型从现有的 Web 项目移到另一个项目中。这包括域模型、业务逻辑和 ASP 身份模型。
[编辑:不知何故,我错过了这个问题是针对 Web 窗体的。我在 MVC 中做到了这一点。但是,我相信大多数情况仍然适用于我在 VS2013 网络表单项目中看到的内容。]
一步一步:
向名为 xyz.Models 的解决方案添加了新的类库(xyz 是现有 Web 项目的命名空间)——使用其他类似 ModelLib 的东西很好,你只需要稍后搜索/替换命名空间,而前者你赢了't.
从 web 项目中,将所有域模型移动到类库中。我包括了数据库上下文类(exam.XyzContext.cs)、所有 AspNet... 模型和 IdentityModels.cs。 注意:暂时保留 Microsoft 默认的 ManageViewModels.cs。
接下来,我将 ManageViewModels.cs 移动到我的 Web 项目的 ViewModels 文件夹中,并将其命名空间从 Models 更改为 ViewModels。 Views/Manage 中的现有 cshtml 文件也需要反射(reflect)此 namespace 更改。
接下来,ManageController.cs 使用 ManageViewModels.cs,因此我将“使用 xyz.ViewModels”添加到 ManageController.cs。
接下来,在我的 Web 项目中有一个空的 Models 文件夹,我将其从项目中排除。
接下来,从 Web 项目的 App_Start,我将 IdentityConfig.cs 移动到模型类库并将其命名空间更改为 xyz.Models (同时删除了它的“using xyz.Models”声明)
接下来,我添加了类库 (xyz.Models) 作为对 Web 项目的引用。
接下来,我将以下 NuGet 包安装到类库中
以下可能不适用于您的项目,但这些是我在基于一些业务逻辑类的类库中需要的其他东西:
对“System.Web.Mvc”的引用
对“System.Web”的引用 – 注意:有必要添加一个项目对 System.Web 的引用,因为我使用的是 HttpContextBase,HttpContext 在类库中(这起初令人困惑,因为我的类(class)已经有了“使用 System.Web”的声明。我不会散列为什么在这里,但只要确保你的项目中有“System.Web”引用(单独使用 System.Web.Mvc 是不行的)。
同时,根据我自己的喜好,我将 IdentityModels.cs 中的“DefaultConnection”更改为我为其他人使用的数据库上下文(并删除了我的 Web 项目的 web.config 中对 DefaultConnection 的引用; 保留“XyzContext”。)注意:所有表都在同一个数据库中。
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("XyzContext", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
此时,编译在我为集中某些 aspnet 身份业务逻辑而创建的自定义类之一中出现了“GetOwinContext”错误。为了解决这个问题,我的类库中需要另一个 NuGet 包:Microsoft.Owin.Host.SystemWeb。
之后一切正常。
关于c# - ASP.NET Web 窗体和标识 : Move IdentityModels. cs 到另一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020094/
程序集,masm 嘿,我写了宏来打印存储在 dane1 段中的 1 字节值。 我将值除以 16,然后将提醒推送到堆栈,直到值==0。然后我弹出提醒将它们转换为 ASCII 码,并打印它们。 有人可以看
我在 Apache Geronimo 2.1.3 上有一个 Web 服务应用程序。 我正在使用 JAX-WS,使用 SOAP 1.1 注释 POJOS。 (使用 Sun JDK 1.5) 各种客户端都
我有一个数据变量,monthArray,它被多个消费者读取,并由单个定期更新程序线程定期更新数据。全部异步。 我已经考虑了这两个选项来安全地执行更新。 ArrayList tempArray
我有一组 3D 体。每个 Body 由 8 个点定义,每个点具有三个坐标。所有的物体都是立方体的或近似立方体的。我想用系统的点栅格“填充”立方体。坐标存储在简单的 data.frames 中。 我开发
我正在处理遗留代码,需要打补丁。 问题:一个古老的应用程序发送错误的 HTTP POST 请求。其中一个参数未经过 URL 编码。我知道这个参数总是排在最后而且我知道它的名字。我现在正尝试在运行在 t
我想在触摸屏幕时移动 sprite body ,但它不能发生...... -(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
这个问题在这里已经有了答案: Can a union be initialized in the declaration? (3 个答案) 关闭 7 年前。 如果它是一个struct那么它就可以完成
我正在尝试获取生成 sigsys 信号的系统调用的地址!但我从 gcc 收到以下错误: gcc emulator.c -fms-extensions error: ‘siginfo_t’ has no
当我使用 Postman 进行 API 调用时,我收到一个 JSON 对象..这是我所期望的。 但是,当我像这样与 Guzzle 进行相同的调用时: $client = new \GuzzleHttp
在编码时,出现了差异。通常在编写简单的方法或构造函数时,我经常使用表达式体技术。但是,当我产生以下内容时: public class Sample : ISample { private r
我正在使用 LibGDX 创建一个新项目。 我想做的是,我将 tmx 文件中的主体加载到工作正常的关卡中。尸体也有一个 Sprite 。 问题是,我想让用户触摸场景中的某些 body 。当他们触摸 b
我的意图:在不使用 union 的情况下循环遍历一个结构的 30 个成员,所有成员都是字符数组类型,每个成员都存储对 itoa 的调用结果。在下面的代码中,我将结构体成员命名为a-z、A-D。在调用函
我必须将我的代码段之一从 C 转换为 java。代码如下。 union commandString{ char commndStr[20]; struct{ char
#include union NumericType { float value; int intvalue; }Values; int main() { Values.va
我在此代码中收到错误: fun num(num:Int):Int { if (num > 0){ print(num % 10) return num / 10
我是一名优秀的程序员,十分优秀!