无法将ASP.NET Identity模型移动到另一个程序集中

时间:2014-04-22 08:50:34

标签: c# asp.net dll asp.net-identity

我尝试按照此链接中描述的步骤,将我的身份类从Web应用程序中提取到自己的类库中。

http://www.umbraworks.net/bl0g/rebuildall/2013/10/22/Moving_ASP_NET_Identity_model_into_another_assembly

我这样做:

  1. 创建了一个Web表单项目并将其命名为3TierExample
  2. 创建了名为3TierExample.Model的新类类库。
  3. 将NuGet中的Microsoft ASP.NET Identity EntityFramework包安装到3TierExample.Model
  4. identityModel.cs移至新的类库(3TierExample.Model)
  5. 3TierExample.Model
  6. 中添加了对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)。然后,我认为第二个错误是因为没有找到汇编引用。为什么?参考就在那里!?

    有人可以帮忙吗?

    提前谢谢!!

1 个答案:

答案 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中使用。