Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在dll中使用asp.net成员资格提供程序_Dll_Asp.net Membership - Fatal编程技术网

在dll中使用asp.net成员资格提供程序

在dll中使用asp.net成员资格提供程序,dll,asp.net-membership,Dll,Asp.net Membership,在过去的几年里,我在网络应用程序中使用了会员提供商。我现在有一个新的“请求”,要求在工作中执行一个内部项目。他们希望使用一个服务(而不是web服务)对其进行快速身份验证。基本上,公开ValidateUser(用户名、密码)方法 我正在一个DLL中构建它,它将与我们的内部网站放在一起。实现这一目标的最佳方法是什么?DLL将不引用web应用程序,web应用程序将引用DLL。如何使DLL知道成员资格提供程序 短暂性脑缺血发作 PS:如果这已经在别处得到了回答,请告诉我 编辑:我发现了一篇关于在WinF

在过去的几年里,我在网络应用程序中使用了会员提供商。我现在有一个新的“请求”,要求在工作中执行一个内部项目。他们希望使用一个服务(而不是web服务)对其进行快速身份验证。基本上,公开ValidateUser(用户名、密码)方法

我正在一个DLL中构建它,它将与我们的内部网站放在一起。实现这一目标的最佳方法是什么?DLL将引用web应用程序,web应用程序引用DLL。如何使DLL知道成员资格提供程序

短暂性脑缺血发作

PS:如果这已经在别处得到了回答,请告诉我


编辑:我发现了一篇关于在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方法。