小编Cra*_*der的帖子

客户端地址未经授权,并且调用者不是 Azure 中的受信任服务

我正在 Azure 上工作。我有一个访问 Azure Key Vault 的 Windows 服务。

我的代码看起来像这样:

public static async Task<string> GetToken(string authority, string resource, string scope)
{
    var authContext = new AuthenticationContext(authority);
    ClientCredential clientCred = new ClientCredential(...); //app id, app secret
    AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);

    if (result == null)
        throw new InvalidOperationException("Failed to obtain the JWT token");

    return result.AccessToken;
}

public static string GetSecret(string secretName)
{
    KeyVaultClient keyVaultClient = new KeyVaultClient(GetToken);
    try
    {
        return keyVaultClient.GetSecretAsync("my-key-vault-url", secretName).Result.Value;
    }
    catch(Exception ex)
    {
        return "Error";
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# windows-services azure azure-keyvault

9
推荐指数
1
解决办法
3万
查看次数

标记为"ExcludeFromCodeCoverage"的异步方法仍显示为Sonarqube未涵盖

我有一个Windows服务,其中几乎没有异步方法.
我正在为所有这些方法编写单元测试用例.对于一个异步方法,我不想编写任何测试用例,所以我用它来装饰该方法[ExcludeFromCodeCoverage].

我正在使用Sonarqube检查代码覆盖率.
我观察到的是异步方法[ExcludeFromCodeCoverage]

[ExcludeFromCodeCoverage]
async Task IEventProcessor.CloseAsync(PartitionContext context, CloseReason reason) { 
    if (reason == CloseReason.Shutdown) {
        await context.CheckpointAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

仍然显示为sonarqube工具未涵盖.

但是当我重构我的代码以从方法中删除异步时,

[ExcludeFromCodeCoverage]
Task IEventProcessor.CloseAsync(PartitionContext context, CloseReason reason)  
    if (reason == CloseReason.Shutdown) {
        return context.CheckpointAsync();
    }
    return Task.CompletedTask;
}
Run Code Online (Sandbox Code Playgroud)

它按预期工作正常.

所以想知道,为什么sonarqube不考虑异步方法.

是否有任何设置或配置要做,我可能会失踪?

我正在使用Visual Studio 2015 Professional,框架:4.6.1,SonarQube - 7.1,如果有帮助的话.

c# code-coverage async-await sonarqube

7
推荐指数
0
解决办法
436
查看次数

System.Net.WebException:底层连接已关闭:无法建立 SSL/TLS 安全通道的信任关系

我在虚拟机中有一个 Windows 服务。它正在调用托管在另一台服务器上的 API。当我从 Windows 服务调用该 api 时,它给我错误消息:

System.Net.WebException:底层连接已关闭:无法建立 SSL/TLS 安全通道的信任关系。---> System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。

现在我知道如果我在调用 api 之前添加这一行,它会正常工作。

System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
Run Code Online (Sandbox Code Playgroud)

但我不想更改我的代码并再次部署它。有什么方法可以在托管 Windows 服务的虚拟机中执行某些操作(例如信任证书或其他操作),从而解决此问题?

在这方面的任何帮助都非常有帮助。谢谢。

我知道这个问题被多次询问,但所有解决方案都要求我更改托管 api 的服务器或更改我的代码以添加上面的行。我正在寻找一种可以在客户端计算机而不是其他地方进行更改的解决方案。

c# ssl

6
推荐指数
1
解决办法
6735
查看次数

Web API 默认可以并发处理多少个请求

我有一个在 c# .Net Framework 4.6 中开发的非常简单的 Web API。整个应用程序中
没有任何调用。async每个请求大约需要 30 秒才能完成。它执行一些计算并返回一个 JSON 字符串。这里不涉及数据库。它只是从云端下载文件并计算一些值。

它托管在 Windows Server 2016、IIS 中。

我想知道 Web API 或 IIS 在给定时间点处理多少个并发请求。

我知道不能像这样从 web.config 增加并发请求:

<configuration>
  <system.net>
    <connectionManagement>
      <add address="*" maxconnection="50000"/>
    </connectionManagement>
  </system.net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

以下是我的一些问题,我确信这些问题都是非常基本的。
1. Web API 默认情况下(无需在 web.config 或应用程序中的任何位置添加任何内容)是否具有处理并发请求的能力。如果有,有多少?

  1. 默认情况下,IIS 是否具有处理并发请求的属性(使用 IIS 线程池)。如果有,有多少?

PS:假设该API正在使用的所有资源始终可用。

如果有人可以帮助我理解这一点并指导我找到正确的文章,那对我来说将非常有帮助。提前谢谢了!

c# concurrency asp.net-web-api

5
推荐指数
1
解决办法
1万
查看次数

在sqlserver中分组

我有类似于下面的数据.我需要根据数据的出现对状态列进行分组.

Id  Status  Value
1     K      1
2     K      3
3     K      2
4     B      2
5     B      3
6     K      6
7     J      5
8     J      2
Run Code Online (Sandbox Code Playgroud)

我想要数据如下

Status  Value
K       6
B       5
K       6
J       7
Run Code Online (Sandbox Code Playgroud)

我需要值列的累积和.在状态列中,如果数据连续相同,那么我需要添加值列.我不能应用group by.在给出的例子中,K重复两次,因为它们不是连续的.

我尝试了以下查询,但它不能按要求工作.

select Status,
       (select sum(value)
        from table t2
        where 
          t2.Status = t.Status and
           t2.SNO <= t.SNO
       ) as total

from table t;
Run Code Online (Sandbox Code Playgroud)

请帮忙!!

sql-server grouping gaps-and-islands

3
推荐指数
1
解决办法
90
查看次数

使用Moq框架模拟方法不会返回预期结果

我有一个类库,它具有2个类和一个接口,如下所示。
主类:

    public class Class1 
    {
        int a=5 ,b=9;
        private Interface1 iHelper;
        public Class1(Interface1 _inter)
        {
            iHelper = _inter;
        }
        public int getData()
        {
            int result = iHelper.AddNumbers(a, b);
            return result;
        }

    }
Run Code Online (Sandbox Code Playgroud)

HelperClass类别:

class HelperClass : Interface1
    {
        public int AddNumbers(int a, int b)
        {
            return a + b;
        }
    }
Run Code Online (Sandbox Code Playgroud)

介面

public interface Interface1
    {
        int AddNumbers(int a, int b);
    }
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试测试该方法getData()。我AddNumbers使用来模拟方法Moq,如下所示。

[TestMethod()]
public void getDataTest()
{
     int a = 3, b …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing mstest moq

3
推荐指数
1
解决办法
1815
查看次数

拖放“ Where”并将条件移到LINQ的“ First”中

我有一个Windows应用程序,它具有如下类似的代码。
作为类命名Order

class Order{
 public string Orderid { get; set; }
 public string CustName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,在此应用程序的另一个类中,将创建Order类的对象,并为其分配值。

Order order = new Order();
order = JObject.Parse(some JSON data).ToObject<Order>();
Run Code Online (Sandbox Code Playgroud)

现在我CustName要从中提取基于Orderid的order。为此,我使用了LINQ。

string custName = order.Where(s => s.Key == "o123").First().Value;
Run Code Online (Sandbox Code Playgroud)

我正在使用Sonarqube来检查代码质量。当我运行SonarQube工具时,表明需要在使用LINQ的地方重构代码。这是它显示的确切行。

Drop 'Where' and move the condition into the 'First'.
Run Code Online (Sandbox Code Playgroud)

我已经搜索了很多,但不明白它要说的是什么。谁能解释我如何重构这条线,以便它超过SonarQube的期望。
任何输入都非常有帮助。

c# linq sonarqube

3
推荐指数
1
解决办法
964
查看次数

如何将附加参数与New-AzureRmResourceGroupDeployment cmdlet一起传递

我正在编写一个powershell脚本,以使用New-AzureRmResourceGroupDeployment cmdlet创建VM,如下所示。

New-AzureRmResourceGroupDeployment -Name VmDeployment  `
  -TemplateFile C:\template\template.json `
  -TemplateParameterFile C:\template\parameters.json
Run Code Online (Sandbox Code Playgroud)

这用于创建VM。在中parameters.json,有些参数(例如virtualMachineNamenetworkInterfaceName等已进行了硬编码。
现在,我正在尝试使这些脚本自动化,即,当满足某些条件时,它们可以通过工具自行运行。

我的要求是,无论何时运行此脚本,都必须增加VMName中的数字。假设VM Name现在是VMName1,它必须是VMName2脚本下次运行时的时间。VMName3下次运行脚本时类似。由于virtualMachineName参数是硬编码的,所以现在不会发生这种情况。无论如何,我可以virtualMachineName在脚本本身中将其作为参数传递,而不是从json文件中获取。

任何指导都将受到高度赞赏。谢谢!

azure azure-virtual-machine azure-resource-group azure-template

3
推荐指数
1
解决办法
3188
查看次数

Web API 的命名空间“System.Web”中不存在类型或命名空间“Http”

我正在尝试按照此链接创建 Web API。我有整整增加它在显示方式文章。

但是在添加控制器后,它给了我这个错误System.Web.HttpApiController

System.Web.Http 上的错误消息:

命名空间“System.Web”中不存在类型或命名空间 Http

ApiController 上的错误消息:

找不到类型或命名空间 ApiController。

附加信息 :

我正在使用 Visual Studio 2015 专业版。框架:.NET 框架 4.6.1

我已经搜索了很多关于这个问题,但找不到任何解决方案。我确定我在某处遗漏了非常小的细节,但任何人都可以在这里帮助我。
非常感谢。

c# asp.net-web-api .net-4.6.1

3
推荐指数
1
解决办法
6042
查看次数

访问 Angular 5 组件中的 javascript 变量

我的 Angular 应用程序 data.js 中有一个 js 文件。这个 js 文件中声明了一些变量,如下所示。

 var data = 'test'
Run Code Online (Sandbox Code Playgroud)

现在我必须在我的组件 (app.component.ts) 中访问这些变量及其值。

我读了一些将它们声明为导出使它们成为模块并且可以在任何地方访问的地方,但我不确定如何做到这一点。

这是我的应用程序的结构。我在assets->js文件夹中有data.js。我需要修改app.component.ts中的变量值。

在此处输入图片说明

我对 Angular 很陌生。这甚至可能吗?

javascript angular angular5

2
推荐指数
1
解决办法
1万
查看次数