- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我看到在我执行 DirectorySearcher FindOne() 和我看到的第一个网络数据包发送到 LDAP 服务器之间有 2-5 秒的初始延迟。初始执行后,后续执行会立即完成约 45 秒。在这段快速执行之后,下一次执行将被延迟,所有后续执行将再次立即完成。似乎正在进行某种缓存,但我无法找到任何资源来确认或描述导致初始延迟的原因。
我们在客户端 Windows 2008 服务器上注意到了这一点,然后在我们自己的 Windows 2008 和 Windows 7 机器上重现了这一点。
这是我的简单 .NET 4.0 C# 应用程序的外观。延迟发生在“已开始”和“已完成”消息之间。
知道为什么在初始 FindOne() 执行时会出现这种延迟吗?非常感谢任何帮助!
using System;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;
namespace LdapTest
{
class Program
{
static void Main(string[] args)
{
string[] fetchAttributes;
fetchAttributes = new string[] { "{string[0]}" };
using (DirectoryEntry searchRoot = new DirectoryEntry("LDAP://localserver/ou=lab,dc=ourdomain,dc=com", "cn=binduser,ou=Services,dc=ourdomain,dc=com", "Password", AuthenticationTypes.ReadonlyServer))
{
using (DirectorySearcher searcher = new DirectorySearcher(searchRoot, "(sAMAccountName=UserName)", fetchAttributes, SearchScope.Subtree))
{
Console.WriteLine("Started");
SearchResult result = searcher.FindOne();
Console.WriteLine("Finished");
}
}
}
}
最佳答案
根据LDAP ADsPath MSDN article ,如果您的绑定(bind) LDAP 路径指向服务器以避免不必要的网络流量,您应该指定 ServerBind
标志。它还建议提供服务器的完整 DNS 名称。此外,ReadonlyServer
标志在指向服务器时没有意义。所以我的第一个建议是用 ServerBind
替换 ReadonlyServer
标志(最好给出完整的 DNS 名称),或者删除字符串的服务器部分(在你的例子中,使它是 LDAP://ou=lab,dc=ourdomain,dc=com 或 LDAP://ourdomain.com/ou=lab,dc=ourdomain,dc=com)。
另一件需要注意的事情是,您是通过专有名称提供用户名的。如果您查看 DirectoryEntry 使用的核心 API,IADsOpenDSObject::OpenDSObject ,它要求 lpReserved 标志 [DirectoryEntry 中的 AuthenticationTypes
参数] 为零 [None
] 或在传递时包含 ADS_USE_SSL [SecureSocketsLayer
] 标志用户名的专有名称。请注意,SecureSocketsLayer
标志要求 Active Directory 要求先安装证书服务器,然后才能使用该标志。您可能希望以不同的格式传递用户名。
最后,this MDSN page表示没有任何身份验证标志,用户名和密码以明文形式发送。您应该添加 Secure
标志。
关于c# - DirectorySearcher FindOne() 初始执行延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406955/
我有一个简单的 node.js 代码,它使用 mongoose,它在保存时工作但不检索。 .save() 有效,但 .findOne() 无效。 mongoose = require('mongoos
const categorySlug = req.query.category; const category = await Category.findOne({ slug: categorySlu
我正在使用 Waterline通过 Sails 查询 MySQL 数据库。我找到了 2 种方法。 不知道哪个更好? 顺便问一下,如何处理这两种情况的错误? 1. Model.findOne().whe
我可以在没有数据匹配的情况下将 findOne 查询结果从 NULL 更改为空对象吗?如果是,如何? 先感谢您 最佳答案 我认为此选项的 Sequelize 中没有插入配置。 您可以为模型访问层创建一
我将 NestJS 框架与 TypeORM 和 PostgreSQL 结合使用。假设我有一个简单的 User 实体,它只有两个属性:id 和 name @Entity() class User {
我将 NestJS 框架与 TypeORM 和 PostgreSQL 结合使用。假设我有一个简单的 User 实体,它只有两个属性:id 和 name @Entity() class User {
I'm practicing by following a React, MUI, Nodejs, CRUD project. Currently am able to get the regi
我正在尝试使用 Sequelize 和 mysql db 创建一个模型。我正在尝试发布到“/students/register”,它一直给我一个错误,说 findOne 不是一个函数。我尝试要求我的
有没有可能做findOne在mongodb中解释? 目前我已经尝试过: db.coll.findOne({query}).explain() db.collection.findOne({query}
在我的应用程序中,我尝试使用 .findOne 但出现错误。这是我的错误:- TypeError: User.findOne is not a function at Strategy._verify
我有一个 user.js 文件,用于我网站中的用户模型。这是用户架构: var UserSchema = mongoose.Schema({ username: { type:
我正在从 SQL 迁移到 MonboDB,并且我正在尝试学习基础知识。但到目前为止,我一直在努力解决一个“Select 语句” 假设我有这样的收藏 文档1 { "_id" : "id1", "
login: function (req, res) { var username = req.param('username'); var password = re
潜在客户和客户都是集合。为什么 Leads.findOne() 返回一个对象?它应该像 Customers.findOne() 那样返回一个 Document。 我使用的是 Meteor 1.2.1。
我的 mongodb 集合中的 ids 格式如下 "_id" : NumberLong("502434721406525440"), 我正在尝试执行 mongo 的 findOne 方法来检索具有
我专门使用 mongoose,尽管我认为这没有那么重要。例如,假设我有一个名为 MongoQueue 的集合,我向该队列添加了一些人。 `MongoQueue.save {function(err,
我是第一次使用 Mongodb,我遇到了一个非常奇怪的错误。我有一个“游戏”集合,但我无法使用 _id 查询对其进行搜索。 我直接在 mongo shell 上尝试,结果如下: > db.games.
我的问题是:有一组用户。我试图找到 _id=xxx 的用户是否有 somevalue > 5。 我想知道,使用 find(...).count() > 0 或 findOne(...) != null
我在使用 TypeORM 执行嵌套查找查询时遇到一些问题。这是基本代码: const { completionId } = req?.params; const user = req.
我尝试使用护照添加 Facebook 登录信息,但遇到以下错误: 类型错误:无法在 Strategy._verify 中调用未定义的方法“findOne” 我的 app.js 文件中需要 models
我是一名优秀的程序员,十分优秀!