2015-10-17 83 views
1

我有一個ASP.NET MVC 5的Web應用程序,使用ASP.NET身份2.1。我試圖將Web項目中的所有標識/授權代碼移動到類庫中。如何將ASP.NET MVC Web應用程序的身份/身份驗證部分移動到類庫中?

我將所有樣板文件UserManager,SigninManager刪除,並從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項目中。

我很困惑 - 任何幫助將不勝感激。

+0

@vcs:添加該軟件包意味着我的斷點被擊中,謝謝。當然,這意味着許多OWIN庫需要被添加回到我的web項目中,但是這樣做。如果您將您的評論複製到答案中,我會接受它。謝謝。 –

回答

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的引用。

相關問題