Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
Asp.net Membership.ValidateUser在1个项目中工作,在另一个项目中失败_Asp.net_Asp.net Membership - Fatal编程技术网

Asp.net Membership.ValidateUser在1个项目中工作,在另一个项目中失败

Asp.net Membership.ValidateUser在1个项目中工作,在另一个项目中失败,asp.net,asp.net-membership,Asp.net,Asp.net Membership,我有一个简单的CLI应用程序来创建/更新/删除SqlMembershipProvider的用户。它可以正常工作,我可以从CLI应用程序进行验证 然而,当我试图从相关的asp.net应用程序中执行此操作时,它失败了。我已经复制/粘贴了相关的web.conf/app.config部分,所以我不知道它为什么会失败 <machineKey validationKey="C94FA3782AAF21E932CAA92DC2A0641951E3A76E50DD25B19C627BA01E259C6CB

我有一个简单的CLI应用程序来创建/更新/删除SqlMembershipProvider的用户。它可以正常工作,我可以从CLI应用程序进行验证

然而,当我试图从相关的asp.net应用程序中执行此操作时,它失败了。我已经复制/粘贴了相关的web.conf/app.config部分,所以我不知道它为什么会失败

<machineKey validationKey="C94FA3782AAF21E932CAA92DC2A0641951E3A76E50DD25B19C627BA01E259C6CBC7839A7803A59EF3BF855152369A6AB10CC259513BE7ACA4E842B962FD1D8A4"
                decryptionKey="2EA6D270AD94361ECFDCED5070D76FD67D9A147FEEBC8388FE9B73B450A04560"
                validation="SHA1"
                decryption="AES" />

    <membership defaultProvider="MembershipProvider">
      <providers>
        <add name="MembershipProvider" type="System.Web.Security.SqlMembershipProvider" 
             connectionStringName="ApplicationServices" 
             enablePasswordRetrieval="false" 
             enablePasswordReset="true" 
             requiresQuestionAndAnswer="false" 
             requiresUniqueEmail="false" 
             maxInvalidPasswordAttempts="5" 
             minRequiredPasswordLength="1" 
             minRequiredNonalphanumericCharacters="0" 
             passwordAttemptWindow="10" 
             passwordStrengthRegularExpression=""/>
      </providers>
    </membership>

我已经验证了un/pwd实际上是正确的。

在不了解应用程序任何其他信息的情况下,似乎最有可能的问题是配置文件中membership/providers/add节点中的applicationName属性。看

这些应用程序可能默认为单独的应用程序名称/标识符。因此,当您尝试通过web应用登录时,提供商只会看到授予CLI应用的访问权限。CLI应用程序可能无法访问web根目录或虚拟路径信息(没有http上下文)来创建默认名称,因此它可能默认为与web应用程序applicationName不同的名称

请查看此链接以获得良好的解释:

您可以通过两种方式处理此问题:

  • 尝试在两种配置中将applicationName设置为相同的字符串

  • 确保在aspnet_成员资格表中有两个用户“fake”条目。一个用于CLI应用程序,一个用于Web应用程序。您应该在aspnet_应用程序表中找到每个应用程序的applicationID

下面是另一个引用,其中有人在asp.net应用程序之外使用了SqlMembershipProvider:。注意applicationName属性的使用。

我可能在这里遗漏了一些明显的东西,但是当它在web应用程序中“失败”时会发生什么?你有没有收到具体的错误消息?是的,我在发布后意识到我没有设置应用程序名。愚蠢的错误。
Membership.ValidateUser("fake", "fake") // actual test un/pwd combo