Azure上的.NetCore反射有什么问题?

时间:2016-11-03 08:42:57

标签: c# azure asp.net-core asp.net-core-mvc .net-core

任何人都可以告诉我为什么如果我在启动时调用此函数,本地工作正常的.NetCore MVC站点无法启动Azure:

  private static X509Certificate2 GetCertificate(string password)
        {
            var assembly = Assembly.GetEntryAssembly();
            var resourceStream = assembly.GetManifestResourceStream("namespace.path.to.certificate.cert.pfx");

            byte[] data;

            using (resourceStream)
            {
                data = resourceStream.ReadFully();

            }

            var cert = new X509Certificate2(data, password);
            return cert;
        }

如果我删除此电话,网站就会正常启动,如果不是,我会收到502错误。

请注意,此功能在本地IIS和IISExpress上运行良好。

1 个答案:

答案 0 :(得分:0)

资源的名称应为:<Base namespace>.<RelativePathInProject>.<FileName>。此外,资源必须是嵌入式资源

因此,如果您的资源位于&#34; Resources / Certs /&#34;,并且您的默认项目名称空间为&#34; MyProject.Test&#34;,则资源名称为:"MyProject.Test.Resources.Certs.Certificate.cert.pfx"

但可能存在其他问题 - 文件名中的额外点缀。 如果您尝试将编译到程序集中的资源作为嵌入式资源加载,则看起来您不能在命名约定中使用额外的“点”,否则编译器将无法正确地将您的文件添加到清单中,此时所有对GetManifestResourceStream的调用将返回null。 我可以看到你有pathtocertificate.cert.pfx。尽量只拥有certificate.pfx