zoukankan      html  css  js  c++  java
  • asp.net验证组件membership登录失败的问题

    首先,先转发http://www.cnblogs.com/David-Qian/archive/2009/02/18/1392569.html
    ApplicationName 得到的启示

    不知道大家有没有遇到过这样的情况,在测试环境中,ASP.NET程序一切运行正常,可一旦部署到远程IIS server上时,membership验证就出现问题了,Login控件提示“登录失败,请重试”。如果你遇到过这种情况,请看如下解释。

    这大都是由于ApplicationName引起的。我们在web.config中配置membership,role,profile等信息时,正常都会添加上ApplicationName='/'或ApplicationName='specificName'。如果你没有配置ApplicationName,那么这个问题就出现了。

    简单的说,membership验证时是需要知道application的名字的。如果你配置了,那么一切都OK。如果你没配置,它默认会添加上虚拟目录的名字。这样就有问题了,因为我们在远程IIS中很可能使用了不同名字的虚拟目录,这就导致了原来的用户无法得到验证。

    如果你不信的话,可以在自己的机器上修改membership的ApplicationName配置,然后你再试试原来的用户能否通过验证,答案是:不能。

    ApplicationName的配置可以是一个特定的name,如MyApp。也可以是一个斜杠'/',它将使用ASP.NET 2.0默认配置。ApplicationName是存储在membership数据库的aspnet_Applications的表中的,大家可以check下。同时,每个用户都会对应一个applicationID(check aspnet_Users表),这就是为什么改了ApplicationName后,原先的用户将无法验证的原因了。

    还是老话,问题虽小,希望大家能理解其中的原理,对今后有所帮助!同时,我也希望大家能够说说自己的理解和感受,并把自己的一些经验分享出来,让所有人都能得到提升!

    Have a nice day!

    ================

    本人也是同样的情况,这次用的是oracel,所以一直以为是oracel的问题,调试的时候成功,发布后IIS就不成功,看了上面的文章解决了问题。

    以前一直用的ms sql,这次还特地又弄了个ms sql测试也成功,更加以为是oracel那边的配置,但是毕竟调试状态能通过,:)

    这次测试正好注意到在web.config文件里配置的时候applicationName=“”,所以可能我留空了,在数据库第一次建立用户或角色的时候,就加入了一个名字,

    而默认的是applicationName=“/",测试的时候ms sql我就用了applicationName="/"。总之,这个问题明显和MS SQL还是oracel是没有关系的,

    关键就是你配置文件里面如果留空,那么第一次建用户或使用membership其他功能时,就会创建一条aspnet_Applications记录,而名字是带有应用名的,

    比如我的是"/TLERP",如果配置文件指定"/"那就是"/"。

  • 相关阅读:
    二次冲刺站立会议五
    二次冲刺站立会议四
    二次冲刺站立会议三
    二次冲刺站立会议二
    自己常用网址导航
    Eclipse几个配置
    JVM参数和jvm.log
    JVM性能监控命令
    Linux基本信息查看命令
    Linux IO性能监控工具
  • 原文地址:https://www.cnblogs.com/keyrratuff/p/1594370.html
Copyright © 2011-2022 走看看