无法从Betfair WebAPI c#获取会话密钥

4
我一直在尝试按照这些步骤并使用源代码登录Betfair账户。这很顺利,我得到了一个会话密钥。但是,如果我尝试在另一个项目中重复获取会话密钥的步骤,我会收到“CERT_AUTH_REQUIRED”错误,表明我发送的请求中有客户端证书出现问题。
更奇怪的是,如果我创建另一个项目引用已工作的Betfair项目,并让这个新项目只运行Betfair项目中的Program.Main方法,我会再次收到“CERT_AUTH_REQUIRED”消息?
当Betfair应用程序是解决方案的启动项目时,它可以正常工作。但是,如果我将启动Betfair控制台应用程序的第二个项目设置为启动项目,则不会返回成功响应(尽管代码运行良好,并通过所有相同的步骤,只是网页响应失败)。

有人知道这可能是为什么吗?

2个回答

2

我成功让那段代码在非交互式登录中运行。但是我进行了这个更改。这听起来有些耳熟,因为我记得曾经出现过这个错误。

    private WebRequestHandler getWebRequestHandlerWithCert(string certFilename)
    {
        var cert = new X509Certificate2(certFilename, "", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
        var clientHandler = new WebRequestHandler();
        clientHandler.ClientCertificates.Add(cert);
        return clientHandler;
    }

1
感谢@Robsedgwick,对我来说,我所需要的只是X509KeyStorageFlags.Exportable标志,但我仍然认为这是答案! - mark_h

0

我刚刚发现的另一件可能导致相同错误的事情是,在下面的步骤中输入导出密码。这可能已经改变了自从您创建密钥以来的情况,因为它将其标记为可导出,所以我不需要在代码中添加X509KeyStorageFlags.Exportable

openssl pkcs12 -export -in client-2048.crt -inkey client-2048.key -out client-2048.p12

我原以为导出密码是示例应用程序提示的内容,但实际上并不是,因此导出密码应该留空。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接