如何将ASP.NET MVC Web应用程序的身份/身份验证部分移动到类库中?

时间:2015-10-17 11:12:54

标签: asp.net asp.net-mvc asp.net-mvc-5 owin asp.net-identity-2

我有一个使用ASP.NET Identity 2.1的ASP.NET MVC 5 Web应用程序。我正在尝试将所有标识/授权代码从Web项目中移出到类库中。

我移动了所有样板文件UserManagerSigninManager,并从Web项目中删除了所有用于ASP.NET Identity和OWIN的NuGet包(将它们添加到类库中)。

我还将代码从Startup.csStartup.Auth.cs文件移到我的类库中。这些包含OWIN配置。

现在,我如何确保在应用程序启动时调用此代码?在原始项目中,Startup类(在Startup.cs中)有一行如下:

[assembly: OwinStartupAttribute(typeof(WebApplication1.Startup))]

我在类库中的等效文件中放了一个类似的行(具有正确的类名),但这似乎没有效果。这条线是否必须进入网络应用程序? (我在哪种情况下,大概我需要将OWIN NuGet包添加回web项目 - 这是我希望避免的。)

我也尝试将其添加到我的web.config文件中:

<add key="owin:appStartup" value="MyClassLibrary.MyNamespace.Startup, My.DLL.Name" />

但是,再一次,我不确定如果没有Web项目中的某些内容触发它会如何工作 - 这又回到了将OWIN添加到Web项目中。

我很困惑 - 任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

来自http://haacked.com/archive/2010/05/16/three-hidden-extensibility-gems-in-asp-net-4.aspx/

<强> PreApplicationStartMethodAttribute

这个新属性允许您在应用程序启动时让代码在ASP.NET管道中尽早运行。我的意思是提前,甚至在Application_Start之前。

PreApplicationStartMethodAttribute是初始化Microsoft.Owin.Host.systemWeb的地方。因此,您需要在Web应用程序中添加对Microsoft.Owin.Host.systemWeb的引用。