小编use*_*708的帖子

如何格式化包含特殊字符的 LDAP 过滤器?(“经典”ASP)

我在通过 LDAP 检索我具有 DistinguishedName 的某些组的信息时遇到问题。\n该问题似乎与它们具有特殊字符有关。

\n\n

这里有两个例子,一个有效,一个无效:
\nAll in Test Group
\nAll in 463\\"567y\\\\22\\"\xc2\xa4&/2#%&! 测试组

\n\n

及其 DN:
\nCN=测试组中的所有内容、OU=Groups、DC=some、DC=test、DC=com
\nCN=463\\"567y\\\\22\\"\xc2 中的所有内容\xa4&/2#%&! 测试组、OU=组、DC=某些、DC=测试、DC=com

\n\n

我知道 dn\ 是正确的,因为我从用户的 ManagedObjects 属性中检索它们,并已在 AD 中验证它们并使用 ADSI 编辑。

\n\n

现在,看看我使用什么代码来检索信息,请注意,此代码在没有特殊字符的组上运行良好:

\n\n
Dim strGroupdisplayName, strGroupsAMAccountname, strGroupmail\n\n\nFunction GetGroupInfofromDN(group_str)\non error resume next\nDIM objGroup, objDNNamespace, strLDAPGroup\nstrLDAPGroup = "LDAP://" + group_str\nSet objDNNamespace = GetObject("LDAP:")\nSet objGroup = objDNNamespace.OpenDSObject(strLDAPGroup, strADUsername, strADPassword,0)\nobjGroup.GetInfo\nstrGroupdisplayName = ""\nstrGroupsAMAccountname = ""\nstrGroupmail = ""\nstrGroupdisplayName = ObjGroup.Get("displayName")\nstrGroupsAMAccountname = ObjGroup.Get("sAMAccountname")\nstrGroupmail = ObjGroup.Get("mail")\nset objGroup = Nothing\nEnd Function\n
Run Code Online (Sandbox Code Playgroud)\n\n

至于我尝试过的...我尝试将组编码为 URI 格式,我尝试用转义的等效字符替换特殊字符:

\n\n
strTemp …
Run Code Online (Sandbox Code Playgroud)

ldap ldap-query asp-classic

3
推荐指数
1
解决办法
2万
查看次数

使用Newtonsoft创建无效的Json-允许无效的对象吗?

我故意尝试使用Newtonsoft Json创建无效的JSON,以便放置ESI包含标签,该标签将获取另外两个JSON节点。

这是我的JsonConverter的WriteJson方法:

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
    mApiResponseClass objectFromApi = (mApiResponseClass)value;

    foreach (var obj in objectFromApi.GetType().GetProperties())
    {
        if (obj.Name == "EsiObj")
        {
            writer.WriteRawValue(objectFromApi.EsiObj);
        }
        else
        {
            writer.WritePropertyName(obj.Name);
            serializer.Serialize(writer, obj.GetValue(value, null));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

mApiResponseClass中的EsiObj只是一个字符串,但是需要将其写入JSON响应中,以便在不使用任何属性名的情况下进行解释-这样HSI ESI才能起作用。

当然,这会导致Json Writer发生异常,其值为:

Newtonsoft.Json.JsonWriterException:'状态对象中的令牌未定义将导致无效的JSON对象。路径“。”

有没有办法解决?

理想的输出是JSON格式,从技术上讲是无效的,并且看起来像这样:

{
value:7,
string1:"woohoo",
<esi:include src="/something" />
Song:["I am a small API","all i do is run","but from who?","nobody knows"]
}
Run Code Online (Sandbox Code Playgroud)

编辑: 使用ESI,我们可以使单个响应具有不同的缓存长度-即,我们可以将可以缓存很长时间的数据放置在JSON的某些部分中,并且仅获取更新的部分,例如那些依赖客户端的部分特定的数据。ESI不是特定于HTML的。(如下所示)通过支持这些标签的Varnish运行。不幸的是,要求我们仅发出1个文件作为响应,并且不需要客户进一步的要求。我们也不能更改响应-所以我不能只添加一个专门包含其他节点的JSON节点。

编辑2: “更多json节点”部分是通过ESI解决的,它向我们的后端进一步请求用户/客户端特定的数据,即另一个端点。预期的结果是,我们随后将原始JSON文档与后来的JSON文档无缝地合并在一起。(这样,原始文档可能会很旧,而特定于客户的文档可能会很新)

编辑3: 端点/ something将输出类似JSON的片段,例如:

teapots:[ {Id: 1, WaterLevel: 100, Temperature: 74, ShortAndStout: …
Run Code Online (Sandbox Code Playgroud)

c# json json.net esi

1
推荐指数
1
解决办法
331
查看次数

Varnish - stale-while-revalidate 似乎不会重新验证

我们使用 Varnish 缓存 6.2 位于 WebAPI 后端前面。后端会根据某些请求发送回缓存控制标头,以便我们可以缓存更长时间。

但是,如果后端出现故障并保持故障状态,我们会发送一个小时的 stale-while-revalidate。

因此,来自我们后端的典型缓存控制响应标头如下所示:

public, max-age=30, stale-while-revalidate=3600
Run Code Online (Sandbox Code Playgroud)

在我们的 Varnish VCL 中,我们添加了一个例程,可以在出现某些错误时停止后台获取。这是为了阻止后端的错误响应进入缓存:

sub vcl_backend_response {
    if (beresp.status == 500 || beresp.status == 502 || beresp.status == 503 || beresp.status == 504)
    {
        if (bereq.is_bgfetch)
        {
            return (abandon);
        }

        set beresp.ttl = 1s;
    }
}
Run Code Online (Sandbox Code Playgroud)

我们面临的问题很简单——即使后端可用,Varnish 在 Max-Age 过期后也不会更新缓存中的项目。(并且响应发生了变化)我们已经看到了 Varnish 的响应“Age”标头超过 200 秒的问题,并且响应错误。我们还看到“Age”标头为 1-3 秒的情况,这表明发生了后台提取(或正常提取)。

这种情况发生的频率足以让我们注意到——但并不是每个请求都会发生。

我尝试过简单的“pass”,例如 Varnish 中的以下内容:

sub vcl_recv {
    return(pass);
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎没有效果。

Varnish 设置是否还有其他问题可能导致上述情况?

编辑,根据评论,这是我们添加到与我们的请求交互的每个子中的一个小东西,以查看实际发生的情况:

sub vcl_deliver {
    if (obj.uncacheable) {
        set …
Run Code Online (Sandbox Code Playgroud)

caching cache-control varnish

1
推荐指数
1
解决办法
1659
查看次数

标签 统计

asp-classic ×1

c# ×1

cache-control ×1

caching ×1

esi ×1

json ×1

json.net ×1

ldap ×1

ldap-query ×1

varnish ×1