小编Tan*_*any的帖子

Request.HttpContext.Connection.ClientCertificate 始终为 null

我在适用于 Linux 的 Azure 应用服务上部署了一个 ASP.Net 核心网站。

在控制器中,我正在尝试获取客户端证书,如下所示:

var callerCertificate = Request.HttpContext.Connection.ClientCertificate;
Run Code Online (Sandbox Code Playgroud)

我总是callerCertificate。我试过await Request.HttpContext.Connection.GetClientCertificateAsync()同样的结果null

我的网站虚拟主机创建如下所示:

WebHost.CreateDefaultBuilder(args)
                .UseKestrel()
                .UseStartup<Startup>()
                .UseSerilog();
Run Code Online (Sandbox Code Playgroud)

我还为网站(在 Azure 中)设置了 SSL 设置,如下所示:

在此处输入图片说明

客户端调用方是一个 net462 项目,用于Microsoft.Rest.CertificateCredentials将证书设置为 HTTP 请求。

var cred = new CertificateCredentials(_deviceCertificate)
...
await this.cred.ProcessHttpRequestAsync(_httpRequest, cancellationToken).ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)

c# authentication azure asp.net-core

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

部署后,Azure功能应用程序设置为空

这是我的场景:

  • 我有ac#blob trigger azure函数(alwaysON设置为true).
  • 我正在使用New-AzureRmResource ps cmdlet设置功能应用程序的appsettings.
  • 我正在通过调用"https://$functionAppName.scm.azurewebsites.net/api/zip/site/wwwroot"上的PUT Rest调用来部署azure函数来上传一个zip文件(包含run.csx,function.json和bin/*.dll文件).
  • 我使用CloudConfigurationManager.GetSetting(settingKey)来获取*.dll文件中的appsettings.我对这些appsettings进行了IsNullOrWhiteSpace检查以抛出ConfigurationErrorsException.

问题:部署后,始终对azure函数的第一个触发器失败.如果appsetting是IsNullOrWhiteSpace,它会因为我抛出的ConfigurationErrorsException异常而失败.在第一次失败的触发器后大约一分钟后,所有后续触发器开始成功.

是否需要时间让appsettings加载?你们有没有遇到过这样的问题?解决方法/解决方案是什么?

c# deployment appsettings azure azure-functions

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

(转到)Azure事件处理器主机从现在开始读取事件?

我正在使用azure-event-hubs-go客户端从Azure IoTHub读取事件。我正在创建一个事件处理器主机,并提供一个处理事件的处理程序(如https://github.com/Azure/azure-event-hubs-go中的示例所示)。

如何设置事件处理器主机从当前时间开始接收事件?我看不到任何类似InitialOffsetProvider的选项来手动设置偏移量。

这类似于如何设置EventProcessorHost从现在开始读取事件(UTC)?但这是专门针对Go客户端的。

go azure-eventhub azure-iot-hub

5
推荐指数
0
解决办法
123
查看次数

在 IIS 10 中禁用 Asp.net 网站的客户端证书验证,但允许应用程序请求传入客户端证书

我有一个 Asp.net API 网站,它执行自定义客户端证书验证。在 IIS 10 上托管此网站时,当我调用 API 时,我会从失败的请求日志中获取以下信息。

证书链已处理,但终止于信任提供者不信任的根证书。

我的 web.config 有

<configuration>
    <system.webServer>
        <access sslFlags="Ssl, SslRequireCert" /> 
    </system.webServer>
Run Code Online (Sandbox Code Playgroud)

在 applicationHost.config 我有

<section name="access" overrideModeDefault="Allow" />
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?如何将 IIS 配置为仅传递证书而不验证它?

我想要这样做的原因是,这是一个测试环境,我想信任所有使用自签名证书调用我的 API 的客户端。我将在 API 内部验证证书。

注意:我在 Azure AppService 上托管相同的网站,并将“传入客户端证书”设置为ON。它就像一个魅力。那么,当我将其托管在我的机器 IIS 上时有什么区别?

asp.net client-certificates iis-10 self-signed-certificate

4
推荐指数
1
解决办法
5025
查看次数

MustHaveHappened Assert总是失败,因为在单独的线程上运行异步方法(Task.Run)

我有一个方法:

public class MyClass
{
    public ILogger _logger;

    public async void TestLogMethod(string msg)
    {
        await Task.Run(async ()=> await _logger.Log(msg));
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个测试用例:

[Test]
public async Task TestLogMethod_LogMessage_Test()
{
    var fakeLogger = A.Fake<ILogger>();
    var testClass = new MyClass();
    testClass._logger = fakeLogger;

    testClass.TestLogMethod("Test Message");

    A.CallTo(() => fakeLogger.Log(A<string>._)).MustHaveHappened();
}
Run Code Online (Sandbox Code Playgroud)

MustHaveHappened断言总是失败说

以下调用的断言失败:
MyClass.TestLogMethod <System.Object>(<Ignored>)
预期至少找到一次但没有对伪对象进行调用.

很明显,_logger.Log()被调用,但为什么Asserting总是在这里失败?

c# multithreading nunit fakeiteasy

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