分析器反馈严重性级别在文档中进行了解释。但在我看来 silent,none严重性级别似乎都有相同的含义 - “我不希望检查此规则”:
为了none:
完全被压制了。
为了silent:
对用户不可见。但是,诊断结果会报告给 IDE 诊断引擎。
VS2019“向IDE报告”到底有什么效果,在什么场景下应该更silent喜欢none?
我有一个面向 .NET 4.7.1 的控制台应用程序。我正在尝试在我的 .Net Framework 应用程序中使用 .net core 之类的配置。我的`App.config 是:
<configuration>
<configSections>
<section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
</configSections>
<configBuilders>
<builders>
<add name="SimpleJson"
jsonFile="config.json"
optional="false"
jsonMode="Sectional"
type="Microsoft.Configuration.ConfigurationBuilders.SimpleJsonConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Json, Version=1.0.0.0, Culture=neutral" /></builders>
</configBuilders>
Run Code Online (Sandbox Code Playgroud)
我有一个文件config.json,其属性“始终复制”设置为True. config.json好像:
{
"appSettings": {
"setting1": "value1",
"setting2": "value2",
"complex": {
"setting1": "complex:value1",
"setting2": "complex:value2"
}
},
"connectionStrings": {
"mySpecialConnectionString": "Dont_check_connection_information_into_source_control"
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的main方法中,我尝试读取一个配置值,如:
var config = ConfigurationManager.AppSettings
Run Code Online (Sandbox Code Playgroud)
但是,的值config始终为空。我尝试了以下方法:
jsonFile为~/config.json; …我已经挖掘了几个小时并不断提出有关 .NET Core 的信息,但几乎没有关于 .NET 4.7 完整框架的任何信息。我想出了如何将 User Secrets 添加到我的 Web API 解决方案的主项目中。我得到了基本的 secrets.xml 文件,我需要在其中存储我的数据库用户名和密码或我的连接字符串。我找到的每篇文章都在讨论您需要对 web.config 进行的更改。然而,在secrets.xml 文件中没有显示如何处理我的连接字符串,如何格式化它。我可以创建一个名称/值对,但这似乎没有任何作用,我的应用程序无法连接到数据库。
我的 Web.config 中有这个:
<configBuilders>
<builders>
<add name="Secrets" userSecretsId="5c65f7eb-a7e1-46cc-bff4-a526678005f2" type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version=1.0.0.0, Culture=neutral" /></builders>
</configBuilders>
<connectionStrings configBuilders="Secrets">
<add name="ShopAPDbConnectionString" connectionString="" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我的 secrets.xml 看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<root>
<secrets ver="1.0">
<secret name="ShopAPDbConnectionString" value="Server=SQLDEV01;Database=ShopAP; Integrated Security=True;" />
</secrets>
</root>
Run Code Online (Sandbox Code Playgroud)
如何正确格式化并使其正常工作?
.net asp.net connection-string web-config asp-net-config-builders
创建和删除 Blob 数据都很容易。有多种方法可以防止意外数据丢失,例如:
这已经是一个很好的包了,但感觉还有一个薄弱环节。AFAIK,blob 容器缺乏帐户/blob 的安全性。
考虑到容器是用于 blob 枚举和批量删除的良好单位,但这很糟糕。
如何防止容器意外/恶意删除并降低数据丢失的风险?
想法1:将所有数据的副本同步到另一个存储帐户 - 但这会带来同步复杂性(增量副本?)和显着的成本增加。
想法 2:锁定密钥并迫使每个人都在仔细范围内的 SAS 密钥上工作,但这对于数十个 SAS 令牌及其续订来说很麻烦,+有时实际上需要并授权删除容器。感觉复杂到足以打破。无论如何,我更喜欢安全。
想法 3:以某种方式撤消删除?根据删除容器文档,容器数据不会立即消失:
删除容器操作将指定的容器标记为删除。该容器及其中包含的任何 blob 稍后都会在垃圾收集期间删除。
不过,没有关于存储帐户垃圾收集何时/如何工作,或者容器数据是否/如何/多长时间可以恢复的信息。
我错过了什么更好的选择吗?
我们有一个遗留的 .NET 解决方案,它结合了 MVC 和 WebForms 的东西,以及一些 Web API 项目作为网站根目录下的应用程序。显然,这些 Web API 应用程序将继承网站的 web.config 设置。
我们还有另一个项目——一个有界上下文——用于 SSO 身份验证,它位于同一个根文件夹内,因此也继承了网站的 web.config 设置。这个有界上下文应用程序是用 .NET Core 构建的。
- wwwroot // .NET Framework
- API 1 // .NET Framework
- API 2 // .NET Framework
- ...
- SSO / authentication // bounded context, built in .NET Core
Run Code Online (Sandbox Code Playgroud)
我们最近开始使用 Azure Key Vault 来存储我们的机密,为了在本地处理这些机密,我们使用了 secrets.xml 文件。所以根网站的 web.config 看起来像这样......
<configSections>
<section name="configBuilders" ... />
</configSections>
<configBuilders>
<builders>
<add name="Secrets" optional="false" userSecretsFile="~\secrets.xml" [elided attributes] />
</builders>
</configBuilders>
<appSettings …Run Code Online (Sandbox Code Playgroud) c# web-config subapplication secretsmanager asp-net-config-builders
我正在使用适用于 .NET 的 Microsoft.Azure.Services.AppAuthentication 库 (v1.0.3),使用托管服务标识从 Azure Function 应用连接到 Blob 存储。授权码:
var tokenProvider = new AzureServiceTokenProvider();
string accessToken = await tokenProvider.GetAccessTokenAsync("https://storage.azure.com/");
var tokenCredential = new TokenCredential(accessToken);
var credentials = new StorageCredentials(tokenCredential);
var storageUri = new Uri($"https://{accountName}.blob.core.windows.net");
var client = new CloudBlobClient(storageUri, credentials);
Run Code Online (Sandbox Code Playgroud)
无论给定的 RBAC 角色如何,现有存储帐户都拒绝接受 MSI:
Microsoft.WindowsAzure.Storage.StorageException: Server failed to authenticate the request.
Make sure the value of Authorization header is formed correctly including the signature.
at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteAsyncInternal[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token)
at Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer.CreateIfNotExistsAsync(BlobContainerPublicAccessType accessType, …Run Code Online (Sandbox Code Playgroud) azure azure-active-directory azure-blob-storage azure-functions azure-managed-identity
C# 7.1引入了一些新的命令行参数来帮助创建“参考程序集”。通过文档,它输出一个程序集,其中:
将它们的方法体替换为单个 throw null 体,但包括除匿名类型之外的所有成员。
我发现了一个有趣的注释,它在变化时更加稳定:
这意味着它的更改频率低于完整的程序集——许多常见的开发活动不会更改接口,只会更改实现。这意味着增量构建可以更快 - ...
我们将介绍第二个概念,即“参考组件”(也称为骨架组件)。[---]它们将用于构建场景。
.. 无论这些“构建场景”对于罗斯林来说是什么。
据我所知,对于普通的 .NET 程序集用户来说,此类程序集可能更小,并且加载反射的速度稍快。好的但是:
它的用处似乎相当小众。
因此,我想知道通用程序集生成器方面的事情 - 什么时候应该考虑显式使用这些新的编译器标志来创建引用程序集?除了罗斯林本身之外,它还有任何实际用途吗?
我试图找到在 Azure ComsmosDB SQL 查询中执行 If/Case 类型语句的正确语法。这是我拥有的文件
{
"CurrentStage": "Stage2",
"Stage1": {
"Title": "Stage 1"
},
"Stage2": {
"Title": "Stage 2"
},
"Stage3": {
"Title": "Stage 3"
}
Run Code Online (Sandbox Code Playgroud)
}
我想要做的是创建一个看起来像的查询
Select c.CurrentStage,
if (CurrentStage == 'Stage1') { c.Stage1.Title }
else if (CurrentStage == 'Stage2') { c.Stage2.Title }
else if (CurrentStage == 'Stage3') { c.Stage3.Title } as Title
From c
Run Code Online (Sandbox Code Playgroud)
显然,我拥有的文档和查询比这个复杂得多,但这让您对我正在尝试做的事情有了大致的了解。根据文档中的其他一些字段,我在选择中有 1 个字段是可变的。
我正在用 C# 制作一个应用程序,其中包含很多表单和其他内容。我想本地化它,所以我使用了VS中集成的本地化功能。该应用程序最初是法语(因为我是),带有英语翻译 RESXes,但现在它与其他一些不会说法语的开发人员一起出现在 Codeplex 上,我想更改应用程序和 RESX 文件中的“默认”语言这样他们就可以在不阅读法语的情况下翻译成其他语言。因为当您在 VS Form Designer 中选择另一种语言时,它会显示默认语言(此处为法语)。我尝试重命名所有文件,但问题是所有表单属性都存储在默认的 RESX(法语)中,因此如果我重命名,它将破坏所有内容。是否可以将默认语言更改为英语?
编辑:我认为我需要更精确。该应用程序最初是法语的。然后我将其本地化为英语。现在有一个包含表单属性+原始法语本地化的 MainWindow.resx 和一个仅包含英语本地化的 MainWindow.en-US.resx。因此,如果在设计器中,在“语言”中我选择“(默认)”,它会向我显示 MainWindow.resx 法语,如果我想翻译,它会向我显示法语文本。为了让其他开发人员更容易翻译,我想将 MainWindow.resx 进行英语本地化并创建一个单独的 MainWindow.fr-FR.resx。我还尝试更改AssemblyInfo.cs中的“中性语言”,但没有效果。
当我在调试时查看连接字符串时,值为“abc”;不是我设置的 Windows 环境变量。
<configSections>
<section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
</configSections>
<configBuilders>
<builders>
<add name="Environment" type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Environment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</builders>
</configBuilders>
<connectionStrings configBuilders="Environment">
<add name="myConnection" connectionString="abc" providerName="System.Data.SqlClient"/
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我仔细检查了是否安装了正确的 Nuget 包、框架在 4.7.2 上是否正确、我的拼写是否正确,并且我已多次阅读有关配置生成器的Microsoft 文档。