我有一个使用ASP.NET Identity 2.1的ASP.NET MVC 5 Web应用程序。我正在尝试将所有标识/授权代码从Web项目中移出到类库中。
我移动了所有样板文件UserManager
,SigninManager
,并从Web项目中删除了所有用于ASP.NET Identity和OWIN的NuGet包(将它们添加到类库中)。
我还将代码从Startup.cs
和Startup.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项目中。
我很困惑 - 任何帮助都会受到赞赏。
答案 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的引用。