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