如何解决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 举报,一经查实,本站将立刻删除。