在dll中使用asp.net成员资格提供程序
在过去的几年里,我在网络应用程序中使用了会员提供商。我现在有一个新的“请求”,要求在工作中执行一个内部项目。他们希望使用一个服务(而不是web服务)对其进行快速身份验证。基本上,公开ValidateUser(用户名、密码)方法 我正在一个DLL中构建它,它将与我们的内部网站放在一起。实现这一目标的最佳方法是什么?DLL将不引用web应用程序,web应用程序将引用DLL。如何使DLL知道成员资格提供程序 短暂性脑缺血发作 PS:如果这已经在别处得到了回答,请告诉我在dll中使用asp.net成员资格提供程序,dll,asp.net-membership,Dll,Asp.net Membership,在过去的几年里,我在网络应用程序中使用了会员提供商。我现在有一个新的“请求”,要求在工作中执行一个内部项目。他们希望使用一个服务(而不是web服务)对其进行快速身份验证。基本上,公开ValidateUser(用户名、密码)方法 我正在一个DLL中构建它,它将与我们的内部网站放在一起。实现这一目标的最佳方法是什么?DLL将不引用web应用程序,web应用程序将引用DLL。如何使DLL知道成员资格提供程序 短暂性脑缺血发作 PS:如果这已经在别处得到了回答,请告诉我 编辑:我发现了一篇关于在WinF
编辑:我发现了一篇关于在WinForms和/或WPF应用程序中使用ASP.NET成员身份的文章。不幸的是,这些依赖于app.config文件。DLL发布后似乎不使用app.config。如果我错了,请纠正我!文章在这里:在网站中,当应用程序启动时(application\u Start In The global.asax),您可以将网站知道的成员资格提供程序的引用传递给您编写的DLL。dll只需要类型
System.Web.Security.MembershipProvider
。通过这种方式,dll仍然可以从实现中调用所需的方法,但在编译时不知道提供程序的运行时类型(这就是所谓的依赖项注入)。那么,设置SqlMembershipProvider的连接字符串的唯一方法似乎是使用,不应该从我们的代码中调用
初始化SQL Server成员身份
具有属性值的提供程序
在ASP.NET应用程序的
配置文件。这种方法不适用
打算直接从您的
代码
因此,基本上我们必须找到一种方法,将这些信息放入与托管dll的应用程序相关联的配置文件中
您只需在程序集中引用system.web.dll
和system.configuration.dll
,使用SqlMembershipProvider,然后在app.config中为可执行文件设置适当的值,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="MembershipConnectionString" connectionString="connectionstringdetails" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<membership defaultProvider="DefaultSqlMembershipProvider">
<providers>
<clear />
<add name="DefaultSqlMembershipProvider" connectionStringName="MembershipConnectionString" type="System.Web.Security.SqlMembershipProvider" />
</providers>
</membership>
</system.web>
</configuration>
需要注意的重要一点是,如果您选择“MyAssembly.dll”和“TheApp.exe”,则应选择“TheApp.exe.config”,而不是“MyAssembly.dll.config”。配置文件始终与正在执行的程序集相关联。您是在谈论SqlMembershipProvider吗?我有点搞不懂你想做什么。SqlMembershipProvider基本上已经在dll中(实际上是System.Web.dll),只需配置machine.config/Web.config.Yes,即SqlMembershipProvider,就可以使用它。然而,我是从我自己的DLL运行它,而不是一个web应用程序本身。DLL无权访问web配置。因此,问题是如何允许SqlMembershipProvider在没有配置信息的情况下连接。由于我们当前的体系结构,该网站并不总是“运行”。我们有几个DLL,它们通过WebOrb向其他人网站上的小部件提供信息。我目前正在编写一组自定义的提供程序,可以在其中传递配置信息。到目前为止,这看起来是最有希望的。没有(.NET)可执行文件。在一个例子中,它将被一个ColdFusion应用程序调用。我不知道它是如何工作的,我甚至不知道你可以这么做。如果不了解cold fusion是如何工作的,或者它如何在不支持配置文件的情况下托管.Net,我建议尝试使用Initialize方法。