我们有一些共享点站点,它们使用我们为自定义内容(包括身份验证和授权)开发的各种用户控件。在其中一个网站上,当管理员创建新用户时,它会创建一个具有最小长度字符数的密码,保存用户信息并向用户的电子邮件地址发送一封电子邮件。一切都很好,直到......公司刚刚颁布了一项新政策,即所有用户必须使用 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 中重新启动了站点,但没有成功,共享点应用程序池、整个 IIS 实例、物理框和仍然是 8 个字符的密码。发生这种情况的 dll 可能缓存在哪里?我在这件事上抓狂了。预先感谢各位上帝般的专家的帮助。
最佳答案
您可以采取一些措施来帮助尝试追踪此问题。
- 确保它不会本地复制到应用程序的/bin 文件夹
- 使用Fusion Log Viewer查看实际绑定(bind)的内容
Fusion Log Viewer 很可能会满足您的需求。
关于.net - IIS/Sharepoint GAC 上的 DLL 缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3813602/