Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅提供程序集文件中的路径_C#_.net_Web Services_Build - Fatal编程技术网

C# 仅提供程序集文件中的路径

C# 仅提供程序集文件中的路径,c#,.net,web-services,build,C#,.net,Web Services,Build,这是我的问题;目前,我正在使用位于本地计算机上的证书密钥文件,该文件是发送webrequest所必需的。这个项目将与其他人一起使用,我不舒服发送我的证书给他们 我正在尝试使用buildaction-Content将该文件包含在构建时的项目中。但是,我找不到此文件的位置。我也使用嵌入式资源作为构建操作,但我遇到了问题,因为我只能在流中加载文件,这不是我要寻找的,因为对象: X509Certificate2 certificate = new X509Certificate2(certName,

这是我的问题;目前,我正在使用位于本地计算机上的证书密钥文件,该文件是发送webrequest所必需的。这个项目将与其他人一起使用,我不舒服发送我的证书给他们

我正在尝试使用buildaction-Content将该文件包含在构建时的项目中。但是,我找不到此文件的位置。我也使用嵌入式资源作为构建操作,但我遇到了问题,因为我只能在流中加载文件,这不是我要寻找的,因为对象:

 X509Certificate2 certificate = new X509Certificate2(certName, password);
仅使用证书文件的位置,不需要打开它

有谁能提供一个解决方案,让我能够将文件构建到项目中,并且只引用上面对象的路径


谢谢,

您可以通过提供嵌入式resourceName获得如下证书:

using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
        {
            Byte[] assemblyData = new Byte[stream.Length];
            stream.Read(assemblyData, 0, assemblyData.Length);
            var cert = new X509Certificate2();
            cert.Import(assemblyData);
        }

但是,正如@Alex.K在评论中所说,由于“资源”非常容易访问,因此它只会略微提高安全性,您将实现的唯一一件事是该文件不容易被看到。

那么您想对应用程序的最终用户隐藏客户端证书吗?你可以使它稍微困难一些,但没有防弹的方法。如果你想让你的客户端应用程序调用你创建的web服务,然后用证书调用真正的web服务-这样他们根本不需要它。成功了!非常感谢。是的,我理解,因为这将在内部使用,我希望尽可能地消除可见性将有所帮助。