ASP.NET:如何在 Web 应用程序之间共享资源(成员资格、库)
Posted
技术标签:
【中文标题】ASP.NET:如何在 Web 应用程序之间共享资源(成员资格、库)【英文标题】:ASP.NET: How-to share resources (membership, libraries) between web applications 【发布时间】:2009-05-04 11:50:54 【问题描述】:我正在尝试创建一个小型 Intranet。为此,我在本地电脑上有一个网络服务器。该网站的根目录将是一个仪表板,它将包含登录/注册功能(默认 ASP.NET 成员资格)。
http://localhost http://localhost/帐户Intranet 的其余部分将由以下子应用程序组成:
http://localhost/ApplicationName根网站和大多数子应用程序都需要对用户进行身份验证,我将为其使用默认的 ASP.NET 成员资格提供程序。
所有项目(根项目和子项目)都是 Visual Studio 中的单独项目, 每个项目都有自己的 用于部署的 WebSetup 项目。
1.) 如何在子应用程序中使用 ASP.NET Membership?
此外,大多数应用程序(根和子)将使用第 3 方库(数据框架)。
2.) 如何在根项目中引用库并在子应用程序中“使用”引用的库?
感谢您的任何建议!
【问题讨论】:
【参考方案1】:在可用于多个 Web 项目的类库项目中创建您的通用代码。至于会员提供者,我认为您需要将会员数据存储在外部 SQL 实例中(可能在同一台服务器上),然后在每个项目中简单地使用相同的连接字符串来访问它。
【讨论】:
你指的通用代码是第三方库。该库由多个 dll 文件组成,这些文件包含在我部署的每个项目的 /bin/ 文件夹中。我只想将它们部署到根项目的 /bin 文件夹中。子项目需要引用这些文件。这可能吗? 看来程序集需要在 GAC(全局程序集缓存)中注册。对于会员资格部分,您的答案是最好的解决方案。 @ropstah -- 我认为避免将库放入 GAC 的唯一方法是拥有自己的层来引用这些库并将其包含在您的项目中。对包装库的引用应该“带来”对外部库的引用。我不确定这是否值得。【参考方案2】:Membership 设计用于一个或多个应用程序。您可以拥有一个数据库实例(与您的任何应用程序的任何数据库分开),该实例可以容纳您的每个应用程序成员资格数据。如果您希望所有应用程序使用相同的成员资格数据,请在 defining Membership in each application's web.config 时提供相同的应用程序名称(和连接字符串)。
至于您问题的第二部分,tvanfosson 发布的答案(连同 cmets)应该会引导您走上正确的道路。
编辑(@ropstah 评论):啊,我没有考虑到这一点。在这种情况下,您需要实现Single Sign-on (SSO)。 Masoud Tabatabaei 发布了 an article at ASPAlliance.com ,介绍了整个过程。此外,Keith Rull 至 this Stack Overflow question 提供的答案也可能有所帮助。
【讨论】:
我尝试将 web.config 条目中的 applicationName 设置为所有项目的同一个应用程序。但是,在登录根项目时,我仍然需要登录子项目(用户/密码可以工作,但是 cookie 不会在应用程序之间持久化)。以上是关于ASP.NET:如何在 Web 应用程序之间共享资源(成员资格、库)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET MVC 中的 2 个不同项目/应用程序之间共享母版页?
如何在 ASP.NET 中跨多个 Web 应用程序维护相同的会话 ID
如何在 http 和 https 之间共享 asp.net 会话