微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

X509Store.Open 上的访问被拒绝

如何解决X509Store.Open 上的访问被拒绝

在证书和 API 方面,我完全是一个“新手”,所以我(自然地)陷入困境。
我有一个 WCF 服务,我在其中创建了一个这样的 HttpClient 实例(用于与第三方 API 通信的方法)。

private HttpClient CreateClient(String ClientCertificate)
{
    string aAuth = Base64Encode(username + ":" + password);
    
    X509Store myX509Store = new X509Store(StoreName.My,StoreLocation.LocalMachine);
    myX509Store.Open(OpenFlags.ReadWrite);
    X509Certificate2 myCertificate = myX509Store.Certificates.OfType<X509Certificate2>().FirstOrDefault(cert => cert.GetNameInfo(X509NameType.SimpleName,false) == *the name*);
    
    httpclienthandler handler = new httpclienthandler();
    handler.ClientCertificates.Add(myCertificate);

    HttpClient RetVal = new HttpClient(handler);
    RetVal.DefaultRequestHeaders.Add("Authorization","Basic " + aAuth);
    return RetVal;
}

当我使用 WCF 测试客户端运行一个方法时,它按预期工作。 但是,如果我尝试从另一个应用程序运行它,则在尝试打开商店时会收到“拒绝访问”。 (我用 [ServiceBehavior(IncludeExceptionDetailInFaults = true)] 修饰 API 类以获取 API 中的行号)

    the_API.theapiclient g = new the_API.theapiclient();
    the_API.int_APIReturnObject i = g.DoCaseStatus("some parameters");

两个应用程序都驻留在同一台服务器上。
这两个应用程序都是使用 VS2017 创建的(以管理员身份运行)。
证书在“证书-当前用户->个人->证书”
由于我的“测试工具”的异常显示错误的行号,我假设 API 和工具正在成功通信。
知道我做错了什么吗?
提前致谢
罗杰

解决方法

我终于想通了(可能不是最好的解决方案,但它确实有效)
我将 API 的应用程序池标识更改为管理员

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。