我有一个非常简单的程序,它创建了一堆对象并迭代它们来设置每个对象的Priority属性.
static void Main(string[] args)
{
foreach (var obj in ObjectCreator.CreateObjectsWithPriorities())
Console.WriteLine(String.Format("Object #{0} has priority {1}",
obj.Id, obj.Priority));
}
class ObjectCreator
{
public static IEnumerable<ObjectWithPriority> CreateObjectsWithPriorities()
{
var objs = new[] { 1, 2, 3 }.Select(i => new ObjectWithPriority() { Id = i });
ApplyPriorities(objs);
return objs;
}
static void ApplyPriorities(IEnumerable<ObjectWithPriority> objs)
{
foreach (var obj in objs)
{
obj.Priority = obj.Id * 10;
Console.WriteLine(String.Format("Set priority of object #{0} to {1}", obj.Id, obj.Priority));
}
}
}
class ObjectWithPriority …Run Code Online (Sandbox Code Playgroud) 我有一个非常愚蠢但很难的问题.我正在处理一些非常糟糕的C#遗留代码,它们在类和方法名称中有许多非ASCII字符,当对象被序列化为字符串并通过http/tcp /发送时会导致很多问题......我正在寻找一种方法来扫描C#代码并检测类/方法/属性/枚举/ ...的名称中的所有非ASCII字符,但不是在字符串文字或注释或其他任何非C#代码中:
public enum Languages
{
/// <summary>
/// English
/// </summary>
English = 1,
/// <summary>
/// ?eská <- acceptable
/// </summary>
?eská = 2, // <- not acceptable
}
Logger.Info("Selectes language: ?eská"); // <- acceptable
Run Code Online (Sandbox Code Playgroud)
任何实现这一目标的方法都有所帮助:无论是程序化还是使用任何类型的工具.
编辑:正如评论中的许多人建议我应该修复序列化而不是清除非ACII字符,我想澄清为什么这不是一个选项.某些类/方法名称中包含ASCII和非ASCII字符.例如,My?lass看起来像一个完美有效的英文名称,但实际上它?在中间有一个俄文字母,这显然是一个错误使开发人员忘记改变他们的输入语言.我想摆脱代码中的这些错误.
我正在尝试通过 Azure 门户将我的 Azure AppService 和所有墨迹资源移动到另一个订阅。我正在执行以下步骤:
Property id '' at path 'properties.keyVaultId' is invalid
Run Code Online (Sandbox Code Playgroud)
我正在使用 Azure 的免费托管 SSL 证书,并且它未存储在 KeyVault 中。
我该如何解决这个错误?
我一直在Visual Studio中使用ReSharper测试运行器已经有一段时间了,有一点我无法弄明白.
我以前在我的解决方案中进行了一些集成测试,它们向我的本地Web服务器执行了Web请求.我曾经能够以调试模式启动我的Web应用程序,然后在同一个Visual Studio实例(当前正在运行调试会话)中使用Resharper测试运行器启动测试,并且测试将正常运行.我的应用程序中的断点被击中,我能够调试从测试发送的请求.
但是,当我试图为新项目做同样的事情时,测试无法启动.当我运行任何测试时,Visual Studio会显示一个模态窗口Do you want to stop debugging?.为什么我在进行活动调试会话时无法运行测试?这样做的能力取决于什么?Visual Studio版本?Resharper版本?单元测试框架(我目前正在使用MSTest)?
我对“与工厂相关的”设计模式及其OOP实现的理解一直很简单。
但是我最近偶然发现了有关该主题的Wikipeda文章(Factory,Abstract factory),这使我有些困惑,尤其是关于OOP中的“ Factory”是什么。
这里有几个引号:
- 在工厂方法或工厂功能中,返回“新”对象的子例程可以称为“工厂”。
- 工厂用于各种设计模式
- “抽象工厂模式”是一种建立工厂集合的方法。
- 工厂是代码中具体类的位置,在该类中构造对象
引起一些问题:
(1)&(2)这是否意味着工厂不是类或对象,而是逻辑?
(2)“工厂”本身不是模式吗?
(3)“收藏”在这里是什么意思?只是说“您可以有多个实现相同接口的工厂(这是一个抽象工厂)”的一种方式吗?
(4)什么?
任何人都可以澄清这意味着什么吗?我对工厂的最初理解不正确吗?
我有一个 Azure Web 作业 ( .NET Core 2.2),它在启动时从配置中读取一些设置,如下所示:
var builder = new HostBuilder()
.UseEnvironment(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"))
.ConfigureWebJobs()
.ConfigureAppConfiguration((hostContext, configApp) =>
{
configApp.AddEnvironmentVariables();
configApp.AddJsonFile("appsettings.json", optional: false);
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConsole();
var instrumentationKey = hostingContext.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
Console.Writeline(instrumentationKey); // <- this always outputs key from appsettings.json, not from Azure Settings
logging.AddApplicationInsights(instrumentationKey);
}
})
.UseConsoleLifetime();
Run Code Online (Sandbox Code Playgroud)
如你看到的, appsettings.json文件应该有一个APPINSIGHTS_INSTRUMENTATIONKEY密钥,并且在开发环境中读取它很好。
现在,对于生产,我想覆盖它 APPINSIGHTS_INSTRUMENTATIONKEY通过在 Azure 应用程序设置 Web 界面中添加具有相同密钥的设置密钥。
但是,当我将我的 webjob 部署到 Azure 时,它仍然具有来自appsettings.json. 为了强制我的 webjob 具有 Azure 应用程序设置中的覆盖密钥,我必须从appsettings.json. …
我在 Azure 上托管了几个.NET服务,所有这些服务都通过 NLog 适配器( nuget 包)连接到 Application Insights Microsoft.ApplicationInsights.NLogTarget。用法非常简单:
var logger = LogManager.GetLogger(this.GetType().Name);
logger.LogInfo("Received request from user " + userId);
var result = DoSomething(userId);
if(result.Success)
logger.LogInfo("Request successful for " + userId);
else
logger.LogError("Request failed for " + userId);
Run Code Online (Sandbox Code Playgroud)
Application Insights 目标以标准方式在 app/web.config 中配置:
<nlog>
<extensions>
<add assembly="Microsoft.ApplicationInsights.NLogTarget" />
</extensions>
<targets>
<target type="ApplicationInsightsTarget" name="aiTarget" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="aiTarget" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)
一切似乎都正常,但我最近开始注意到 Azure 中缺少一些日志。例如,对于给定的userId,Azure 包含Received request消息,但不successful包含failed消息(并且我确信流程期间没有发生异常)。此外,有些 …
我正在开发一个Web应用程序,允许用户下载PDF文件,他们必须使用他们的证书与Adobe Acrobat签名,然后上传回网络.
我使用的是C#和itextsharp 5.5.9.0所有的PDF相关的工作.
现在,我需要检查文档从Web下载后是否未被更改.我试图做到这一点,让前加入我自己的签名到PDF文件中的用户下载(签字实现或多或少像这个问题).签名和验证工作正常,直到文件第二次签名(使用用户的证书).
在此之后,第一个签名以某种方式变得无效,我都与检查itextsharp的AcroFields.SignatureCoversWholeDocument方法(返回false),并在Adobe Acrobat用户界面(截图).
所以,我有两个问题:
itextsharp)的替代方法是检查PDF文件在生成之后和签名之前是否已更改?我正在开发一个客户端 - 服务器应用程序,客户端必须使用签名对PDF文档进行签名并将其上载到服务器.任务由一个事实,即客户不必嵌入签名转换成PDF的手段,他们只能读取原始字节和原始字节的形式生成签名复杂.
我正在尝试实现以下工作流程:
我发现了一些提取字节的代码示例,用于签名并将签名字节嵌入到PDF中(这是我正在使用的主要示例).
问题是这个示例执行一个程序中的所有步骤,它在获取文档哈希后立即嵌入签名而不关闭PdfStamper.我需要一些方法来保存文档添加签名域和获取后sha.Hash,然后在一段时间后(当服务器收到计算签名)打开文档,并嵌入签名值到PDF.
您能否提供一个方法来修改这个代码,以便在步骤(2)和(4)可以是独立的,并且不需要共享实例PdfReader和PdfStamper?
在关于ASP.NET MVC的网络上的各种文章中,人们都提到微软的MVC实现在某种程度上与"经典"MVC模式不同.
但我从来没有见过任何人进入这个任何细节,乍一看我没有看到ASP.NET MVC是如何从所描述的内容,比方说,任何不同的位置.
所以我的问题是:ASP.NET MVC真的违反了任何MVC模式原则吗?
我正在开发一个监视某些任务的应用程序(例如,如果某些服务/网站当前正在运行,数据库中存在某些记录等).而且,因为大多数这些任务长时间运行,我用TPL用async/await.
我有一个基类用于所有这些任务:
public abstract class LongRunningOperation
{
// .. some props...
internal async void Start()
{
try
{
this.Status = OperationStatus.Started;
await this.DoStart();
this.Status = OperationStatus.Finished;
}
catch (Exception e)
{
this.Status = OperationStatus.Error;
this.Message = e.ToString();
}
}
protected abstract Task DoStart();
}
Run Code Online (Sandbox Code Playgroud)
启动这些任务的方法如下所示:
public static LongRunningOperation[] LaunchOperations()
{
LongRunningOperation[] operations = GetAllLongRunningOperations();
foreach (var o in operations)
Task.Factory.StartNew(() => { o.Start(); });
return operations;
}
Run Code Online (Sandbox Code Playgroud)
此方法返回的数组用于监视所有LongRunningOperations并记录统计信息.目前我有一个控制台应用程序,它有一个while (true)循环,可以打印屏幕上每个操作的统计信息(名称,状态,当前运行时)(每秒刷新一次),直到所有操作都完成.
困扰我的是async void …
c# ×7
itext ×2
.net ×1
asp.net-mvc ×1
async-await ×1
azure ×1
azureportal ×1
factory ×1
foreach ×1
ienumerable ×1
nlog ×1
oop ×1
pdf ×1
resharper ×1
unit-testing ×1