【问题标题】:DLL Caching issues on IIS/Sharepoint GACIIS/Sharepoint GAC 上的 DLL 缓存问题
【发布时间】:2010-09-28 14:06:13
【问题描述】:

我们有一些共享点站点,它们使用我们为自定义内容(包括身份验证和授权)开发的各种用户控件。在其中一个站点上,当管理员创建新用户时,它会创建此最小长度字符的密码,保存用户信息并向用户电子邮件地址发送电子邮件。一切都很好,直到......公司刚刚发布了一项新政策,即所有用户必须使用 10 个字符的最小长度密码,而不是之前的 8 个。这个值在静态类的程序集中,所以我们可以做类似的事情

//Assembly 1 defines rules and logic

public static class AccountRules
{
    public static int PasswordMinimumLength = 10;
}


//Assembly 2 calls references Assembly 1

Status CreateUser(User u)
{
    if (u.Password == null)
    {
        u.Password = GeneratePassword();
    }

    return DAL.SaveUser(User);

}


string CreatePassword()
{
   string pass = "";
   for (int i = 0; i < AccountRules.PasswordMimimumLength; i++)
   {
      pass += RandomChar();
   }
}

我们更新了包含此常量的程序集,重建了相关站点并将控件发布到了开发服务器。现在我创建了一个新帐户,它仍在制作 8 个字符的密码!我检查了带有反射器的组件,恒定长度为 10。我从 GAC 中删除了这个组件,并重新安装了新的组件,最小 10 个字符,仍然生成 8 个字符的密码。我们在 IIS 中重新启动了站点,但没有成功,sharepoint 应用程序池、整个 IIS 实例、物理框和仍然是 8 个字符的密码。发生这种情况的 dll 还可能缓存在哪里?我在这个上扯掉我的头发。提前感谢各位神一样的专家提供的任何帮助。

【问题讨论】:

  • 您确定 CreatePassword() 没有在计时器作业中运行吗?

标签: .net sharepoint iis gac dll


【解决方案1】:

您可以做一些事情来帮助追踪这一点。

  1. 确保没有将其复制到本地应用程序的 /bin 文件夹中
  2. 使用Fusion Log Viewer 查看实际绑定的内容

Fusion Log Viewer 很可能会为您提供所需的内容。

【讨论】:

  • 感谢大家的回答。对 GAC 不太熟悉,融合日志查看器提供了帮助。问题最终是该值来自 GAC(与 bin 文件夹中的 dll 相比,这就是为什么在删除此 dll 时它起作用的原因),并且我的团队和我之间的沟通不畅帮助了这一点。
  • 我很高兴它有帮助!如果这会引导您找到答案,那么最好也接受答案,以便其他人知道什么有帮助!
【解决方案2】:

我不确定您的身份验证系统的定制程度。通常我希望在成员定义中的 web.config 中找到最小密码长度限制。如果您使用的是某种会员模式,那么这就是我要检查的第一个地方。 (简而言之:即使有人在那里放了一个常数,也可能不是您的 DLL 定义了最小密码长度!)

【讨论】:

  • 这个:(简而言之:即使有人在那里放了一个常数,也可能不是你的 DLL 定义了最小密码长度!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 2010-12-04
相关资源
最近更新 更多