我在项目的根文件夹下有一个证书。项目名称是SingleSignOn,但我无法使用GetManifestResourceStream内置方法读取方法。
源代码
namespace SingleSignOn
{
public class Program
{
static void Main(string[] args)
{
var assembly = typeof(Program).Assembly;
var super = assembly.GetManifestResourceNames();
using (var stream = assembly.GetManifestResourceStream("SingleSignOn.idsrv3test.pfx"))
{
}
}
}
}
我从上述内置方法获取NULL
GetManifestResourceStream
我不知道我错过了什么。所述证书的URL为https://github.com/IdentityServer/IdentityServer3.Samples/blob/master/source/Certificates/idsrv3test.pfx
请帮助我阅读证书。
答案 0 :(得分:2)
试试这个:
var resourceName = "SingleSignOn.idsrv3test.pfx";
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
TextReader tr = new StreamReader(stream);
string fileContents = tr.ReadToEnd();
}
注意:将文件作为嵌入资源。档案>右键单击>属性>构建行动>选择嵌入资源。
答案 1 :(得分:1)
确保该文件是“嵌入式资源”。 Right click the pfx file -> Properties -> Build Action
,将其设为'嵌入资源'
答案 2 :(得分:1)
PFX是一个可以容纳一个或多个证书的容器。您可以使用以下代码在c#中打开它们
X509Certificate2Collection collection = new X509Certificate2Collection();
collection.Import("idsrv3test.pfx", "password-for-pfx", X509KeyStorageFlags.PersistKeySet);
现在遍历集合并找到您需要的证书
foreach (X509Certificate2 cert in collection)
{
// work with cert
}
答案 3 :(得分:1)
解决方案2
步骤1:更改.PFX文件的属性 idsrv3test.pfx属性,将Build action设置为Embedded Resource。
第2步:代码更改: -
onAuthStateChanged()
答案 4 :(得分:1)
我个人的方法是为Assembly类编写一个扩展,因为这似乎是一个应该包含在该类中的方法。
因此,正如其他海报所述,首先要确保您的文本文件被标记为“嵌入式资源”,然后使用类似于以下内容的代码:
button.tintColor = UIColor.red
(上面的内容可以更简洁地编码,但为了演示的目的,我还是这样做了)