我正在尝试调试库中的方法(通过NuGet安装,如果这很重要),并且Visual Studio正在使用以下消息跳过它:
步入:踩过没有符号'Cpi.Net.SecureMail.CryptoHelper.FindCertificate'的方法
我在调试设置中添加了符号服务器源,当我第一次调试程序时,它告诉我它正在下载此库的符号.我已经确认这些符号确实已下载,因为它们出现在我的符号缓存目录中.
感谢SLaks,我现在知道从符号服务器下载的PDB显然是过时的格式.如果我直接从TeamCity的构建工件中检索PDB,则调试工作正常.
因此,看起来,不知何故,或出于某种原因,PDB文件正在通过NuGet打包过程或通过Symbol Server下载过程(ProGet)进行更改.
现在,问题的范围显然已大大扩大.
我正在使用带有ARR和URL重写的IIS作为反向代理,以支持与ElasticSearch服务器的HTTPS连接.据我所知,ES已正确配置,并且与ES的直接HTTP连接不会导致错误.
但是,当我通过代理连接时,我在浏览器中收到此错误:
跨源请求已阻止:同源策略禁止在https:// myserver:19201/myindex/_search读取远程资源.(原因:在CORS预检频道的CORS标题'Access-Control-Allow-Headers'中遗漏了令牌'授权')
elasticsearch.yml文件的相关部分是这样的:
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: ["X-Requested-With","X-Auth-Token","Content-Type","Content-Length","Authorization","engine-name"]
http.cors.allow-credentials: true
Run Code Online (Sandbox Code Playgroud)
有什么特别的东西我需要通过代理启用这些请求,或者这是一个傻瓜的差事,我应该寻找另一种选择?
我正在考虑将一些指标导出到Prometheus,而我对打算做的事情感到不安。
我的系统由工作流引擎组成,我想跟踪工作流中每个步骤的一些指标。这似乎是合理的,使用的度量标准称为wfengine_step_duration_seconds。我的问题是我所有工作流程中都有成千上万个步骤。
根据此处的文档,我不应该以编程方式生成名称的任何部分。然后,这将不使用诸如wfengine_step1_duration_seconds和之类的名称wfengine_step2_duration_seconds,因为步骤名称是程序性的(它们会不时更改)。
然后,解决方案是步骤名称的标签。但是,这也带来了一个问题,因为此处和此处的文档强烈警告不要使用基数高的标签。具体来说,他们建议保持“指标的基数低于10”,对于基数超过100,“研究替代解决方案,例如减少维数或使分析脱离监视”。
我正在查看数量不多的标签值(1,000到10,000)。鉴于度量标准的数量不会很大,这是否适合普罗米修斯使用,还是我应该限制自己使用更通用的度量标准,例如单个汇总步骤持续时间,而不是每个步骤的单独持续时间?
我已经使用 Google 的 gRPC 工具包实现了服务器和客户端。在测试时,我注意到从客户端到服务器的 TCP 连接永远不会超过一个,无论Channel我构建了多少个实例。
我计划通过 HAProxy 使用 Google 所谓的“代理负载平衡”。因此,我需要从客户端(例如服务 A)到服务器(例如服务 B)的多个连接。如果创建的连接不超过一个,则 HAProxy 会为该连接选择一项服务,并且其他服务器都不会看到任何负载。
我尝试ChannelOptions.MaxConcurrentStreams在客户端和服务器端(以及双方同时)使用两者,但没有任何运气。如前所述,我创建了多个Channel实例,但无济于事。我发现的唯一有效的技术是创建多个进程,但由于显而易见的原因,这并不理想。
我该怎么做才能完全启用 Google 的“代理负载平衡”场景?
我试图通过Powershell获得一个注册表项的所有权,它正在默默地失败.我正在使用以下代码:
# get the username of the current user
$uname = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
# create an identity reference for the owner
$user = new-object System.Security.Principal.NTAccount($uname)
# create a "drive" for HKEY_CLASSES_ROOT
new-psdrive -name HKCR_zf -psprovider Registry -root HKEY_CLASSES_ROOT
# change the current location
set-location HCKR_zf:\CLSID
# set ACLs
(get-acl '{E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31}').setowner($user)
Run Code Online (Sandbox Code Playgroud)
一切都运行到最后一行,但.setowner()调用无声地失败(所有者不会更改).
如何获得注册表项的所有权?
我通过 Datastax 驱动程序在 Cassandra 中存储一些数据,并且需要存储无符号 16 位和 32 位整数。对于无符号 16 位整数,我可以轻松地将它们存储为有符号 32 位整数,并根据需要进行转换。然而,对于无符号 64 位整数,我不知所措。我可以将它们存储为字符串并解析它们,也可以将它们存储为字节数组。我可以将它们存储为 64 位有符号整数,并执行与 64 位无符号整数之间的转换所需的位操作。
推荐的方式是什么?
我有一个托管实现的命令行应用程序(类似于使用dotnet new worker命令创建的应用程序)BackgroundService,如下所示:
var host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services => {
services.AddHostedService<MyBackgroundService>();
services.AddSingleton<IMyType>(myinstance);
// and so on...
}).Build();
await host.RunAsync();
Run Code Online (Sandbox Code Playgroud)
现在,我希望这个应用程序也托管一个 Web API。目前,我有一个完全独立的构建器,我在类中实例化它MyBackgroundService,并具有一组单独的服务/单例/其他内容:
var builder = WebApplication.CreateBuilder();
// ... various web stuff...
var webApi = builder.Build();
// ... more web api stuff...
await webApi.StartAsync(cancellationToken);
Run Code Online (Sandbox Code Playgroud)
我想将其设置为共享单个 DI 容器...我该怎么做?我的 web api 使用 a WebApplicationBuilder,而我的BackgroundService使用 a DefaultBuilder(这是 a IHostBuilder)。有什么办法可以优雅地设置它吗?
编辑:我发现了这个: https: //learn.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host ?view=aspnetcore-6.0 它为我提供了ConfigureWebHostDefaults通用主机的方法,但是示例不完整。我可以将AddControllers()等放在AddRouting()通用主机上,但是一旦我调用,Build()我就无法执行诸如UseHttpLogging() …
我正在尝试[MessageContract]针对现有的示例消息测试类,我正在寻找一种简化开发的方法,将示例消息文件读入我的[MessageContract]类的实例并查看它是如何工作的(我正在处理一个这里特别复杂的合同,非WCF原产地).
我的[MessageContract]班级看起来像这样:
[MessageContract(IsWrapped = true, WrapperName = "wrapper", WrapperNamespace = "somens")]
public class RequestMessage
{
[MessageHeader(Name = "HeaderElem", Namespace = "otherns")]
public XElement CorrelationTimeToLive { get; set; }
[MessageBodyMember(Name = "id", Namespace = "somens")]
public XElement id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我可以Message使用以下代码将文件读入类的实例:
var xr = XmlReader.Create("sample_message.xml");
var msg = Message.CreateMessage(xr, int.MaxValue, MessageVersion.Soap12);
Run Code Online (Sandbox Code Playgroud)
然而,这并不是特别有用,因为它根本不允许我测试我的[MessageContract]课程.
WCF的内容中的某个地方是将此Message实例转换为特定[MessageContract]类的实例的系统,但它是什么?
我有一个对象
public class Title
{
public int Id {get; set; }
public string Title {get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何用" - "加入所有标题List<Title>?
我正在使用 .NET 4.5 和基于令牌的安全性来实现 WCF 服务。在客户端,我使用myfact.CreateChannelWithIssuedToken()之前从 STS 检索到的令牌进行调用,当我使用此通道调用服务时,我收到以下错误(在 WCF 服务跟踪中):
Cannot resolve KeyInfo for decryption: KeyInfo 'SecurityKeyIdentifier
(
IsReadOnly = False,
Count = 1,
Clause[0] = EncryptedKeyIdentifierClause(EncryptedKey = qDJDOHUxLxDP8/5baRbY6LrnIX2cYLGwC8b9xDQbEfLsYhcowtszecfWK93dFQHBNV+COHSZpKapJlzrbi12QlObuhfpB08vIxrgXCLg69w4PfAq/jzJcK3N16GHHADSE6XT0KVBXQbcwJqyrELLGAc9ve3cnn52EDg6rkVKBNg=, Method 'http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p')
) ', available tokens 'System.ServiceModel.Security.AggregateSecurityHeaderTokenResolver'.
Run Code Online (Sandbox Code Playgroud)
我怀疑这是因为该服务无法解密传入的安全令牌,但我不知道为什么会这样。该证书位于 LocalMachine\My 存储中,并具有关联的私钥。
WCF 如何找到必要的证书,以及为什么在我的情况下无法找到它?