大多数真实世界的 Web 应用程序背后至少有一个 dll 库。如果我们使用 ASP.NET 成员资格提供程序,我们如何调用 dll 中的 Roles.IsInRole 方法?
引用HttpContext的可能性不大。因为,我们有几个控制台应用工具使用同一个 dll 来完成一些批量操作。
听起来您需要将会员机制与 ASP.NET 分离。
这里有一些关于如何从 Windows 窗体应用程序引用 ASP.NET 成员资格提供程序的好资源,这些资源对于控制台应用程序的工作方式相同。
最好的在这里(在 VB.NET 中)。
然而,所有人都面临着相同的基本问题,即恶意用户可以更改他们的配置以使用他们自己的授权数据库。(用户无法使用 ASP.NET 配置,因此我们没有同样的问题。)
因此,更好的方法是直接从您在 ADO.NET 中的代码查询 ASP.NET 成员数据库(这并不难:它们相当简单)或滚动您自己的底层成员提供程序接口的实现(详情在MSDN 上)。然后,您可以让 ASP.NET Membership Provider 调用您自己的代码来确定用户是否处于角色中,并以与控制台应用程序相同的方式使用此代码。