我尝试按照此链接中描述的步骤,将我的身份类从Web应用程序中提取到自己的类库中。
我这样做:
3TierExample
。 3TierExample.Model
的新类类库。3TierExample.Model
identityModel.cs
移至新的类库(3TierExample.Model)
3TierExample.Model
3TierExample
的引用
醇>
然后对于identityModel.cs
我使用以下引用:
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Owin.Security;
using System.Web;
using System;
using _3TierExample.Models;
我的命名空间如下:
namespace _3TierExample.Models{…}
但是当我完成后,我会收到以下错误:
I:.. \ 3TierExample \ 3TierExample \ Default.aspx:ASP.NET运行时错误:无法加载文件或程序集'Microsoft.AspNet.Identity.Core,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 '或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配 (HRESULT的例外情况:0x80131040)
我:... \ 3TierExample \ 3TierExample \ Default.aspx 1 1 3TierExample无法找到元数据文件'I:.. \ 3TierExample \ 3TierExample.Model \ bin \ Debug \ 3TierExample.Model.dll'
无法找到类型或命名空间名称'HttpRequest'(您是否缺少using指令或程序集引用?)I:... \ 3TierExample
找不到类型或命名空间名称'HttpResponse'(您是否缺少using指令或程序集引用?)I:... \ 3TierExample
如果我转到web项目,我看到对新创建的类库的引用就在那里,所以我不知道怎么可能得到第一个错误(No 3)。然后,我认为第二个错误是因为没有找到汇编引用。为什么?参考就在那里!?
有人可以帮忙吗?
提前谢谢!!
答案 0 :(得分:0)
存在装配冲突。
创建项目时,可能是旧版 Asp.net Identity 程序集。您在类lib proj中安装了最新的Asp.net标识包。如果您想将Asp.net Identity Context与主项目分开,那么您的Web项目中不需要该框架。
您可以在创建Web项目时设置无身份验证,这可确保在引用Asp.net Identity Class Lib Project时不会发生冲突。您可能需要从示例Web项目中复制 IdentityModels.cs 才能在Class Lib Proj中使用。