【问题标题】:How can I move the identity/authentication part of my ASP.NET MVC web app into a class library?如何将 ASP.NET MVC Web 应用程序的身份/身份验证部分移动到类库中?
【发布时间】:2016-01-16 02:52:58
【问题描述】:

我有一个使用 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 项目中。

我很困惑 - 任何帮助将不胜感激。

【问题讨论】:

  • @vcs:添加该包确实意味着我的断点被命中,谢谢。当然,这确实意味着需要将许多 OWIN 库添加回我的 Web 项目,但就这样吧。如果您将评论复制到答案,我会接受。谢谢。

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


【解决方案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 的引用。

【讨论】:

    猜你喜欢
    • 2014-07-10
    • 1970-01-01
    • 2014-02-05
    • 2013-10-05
    • 1970-01-01
    • 2015-09-17
    • 2017-10-29
    • 2019-11-21
    • 2021-12-26
    相关资源
    最近更新 更多