gpt4 book ai didi

.net - 有没有办法从 *.config 文件中声明性地设置 ServicePointManager 的 ServerCertificateValidationCallback 属性?

转载 作者:行者123 更新时间:2023-12-04 12:24:53 25 4
gpt4 key购买 nike

我正在寻找一种以声明方式禁用证书验证的方法。
这将非常有用,即在使用 svcutil.exe 时。

到目前为止,我知道如何禁用主机名验证:

<system.net>
<settings>
<servicePointManager checkCertificateName="false" />
</settings>
</system.net>

但这还不够。
我见过有人声称可以做到这一点,但没有任何样本。

最佳答案

我正在使用这个丑陋的 hack 只在 UnitTests 中使用:(

应用程序配置:

<system.net>
<webRequestModules xdt:Transform="Insert">
<clear/>
<add prefix = "http" type = "HttpRequestCreatorWithServerCertificateValidationCallback, TestHelpers"/>
<add prefix = "https" type = "HttpRequestCreatorWithServerCertificateValidationCallback, TestHelpers"/>
</webRequestModules>
</system.net>

HttpRequestCreatorWithServerCertificateValidationCallback.cs
public class HttpRequestCreatorWithServerCertificateValidationCallback : IWebRequestCreate
{
static HttpRequestCreatorWithServerCertificateValidationCallback()
{
var type = typeof(HttpWebRequest).Assembly.GetType("System.Net.HttpRequestCreator");
var ctor = type.GetConstructors()[0];
Creator = (IWebRequestCreate)ctor.Invoke(null);

ServicePointManager.ServerCertificateValidationCallback += delegate
{
return true;
};
}

#region IWebRequestCreate Members

public WebRequest Create(Uri uri)
{
return Creator.Create(uri);
}

#endregion

private static readonly IWebRequestCreate Creator;
}

关于.net - 有没有办法从 *.config 文件中声明性地设置 ServicePointManager 的 ServerCertificateValidationCallback 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4489587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com