我想为 Typed HttpClient 添加一个 HttClientHandler 以包含证书身份验证。
我在网上找到的所有例子都是这样的:
services.AddHttpClient<IMyService, MyService>()
.ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler()
{
// Set here whatever you need to get configured
};
});
Run Code Online (Sandbox Code Playgroud)
但是我不想在此处包含获取证书的所有逻辑,因此我想使用ConfigurePrimaryHttpMessageHandler<>的通用版本并编写自己的消息处理程序以在请求中包含证书。
问题是我很难理解我应该如何实现消息处理程序......我应该从HttpClientHandler继承吗?
请帮忙!
更新
正如我最初怀疑的那样,@Nkosi 证实,从 HttpClient 处理程序派生是这种情况下的方法。最后的代码类似于:
public class MyHttpClientHandler : HttpClientHandler
{
private readonly IMyConfiguration _myConfiguration;
public MyHttpClientHandler(IMyConfiguration myConfiguration)
{
_myConfiguration = myConfiguration;
using (var certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
certStore.Open(OpenFlags.ReadOnly);
var certCollection = certStore.Certificates.Find(
X509FindType.FindBySerialNumber,
_myConfiguration.MyCertificateSerial,
true);
X509Certificate2 certificate = certCollection[0];
ClientCertificateOptions = ClientCertificateOption.Manual;
SslProtocols …
Run Code Online (Sandbox Code Playgroud) c# dotnet-httpclient .net-core httpclientfactory .net-core-2.1
我在 Angular 项目中使用 highcharts,需要对导出 CSV 功能进行一些操作。
我在 stackoverflow 中找到了一个线程,它似乎解释了我需要做什么:
但不幸的是它是使用纯 JavaScript 实现的,我无法找出如何在 Angular 组件内扩展 Highcharts。
这就是我想知道如何在 Angular 中实现:
(function (H) {
H.wrap(H.Chart.prototype, 'getCSV', function (proceed, useLocalDecimalPoint) {
// Run the original proceed method
result = proceed.apply(this, Array.prototype.slice.call(arguments, 1));
result += '\n"My source 1","My source 2","My source 3"';
return result;
});
}(Highcharts));
Run Code Online (Sandbox Code Playgroud)
这是JSFiddle中的工作示例
可能重复:
这些jQuery就绪函数有什么区别?
是$(function(){}); 和$("document").ready(function(){}); 相同?
用$(函数等)启动javascript代码
今天,在查看一些javascript代码时,我发现代码的某些部分写在一个$(function() { })
部分中,而其他部分代码在一个部分内部$(document).ready(function() { })
.所以我的第一反应是:好的,有什么区别?
经过一番谷歌搜索后,我在jQuery教程jQuery 入门中找到了下一个语句:
以下是$(document).ready(callback)表示法的快捷方式:
$(function() {
// code to execute when the DOM is ready
});
Run Code Online (Sandbox Code Playgroud)
现在,问题是:是否$(function() { })
完全等同于$(document).ready(function() { })
?
(还有一个"不太全球化"的间接问题是:我可以安全地将所有代码放在两个部分中的一部分吗?)