2016-11-03 7 views
0

ローカルで正常に動作します.NetCore MVCのサイトは、私は起動時にこの関数を呼び出した場合のAzure上で起動に失敗し、なぜ誰も私に伝えることができます:Azureでの.NetCoreのリフレクションとは何ですか?

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; 
     } 

私はこの呼び出しを削除すると、サイトが正常に起動し、そうでない場合はI 502エラーを取得します。

この機能は、ローカルIISとIISExpressで正常に動作します。

答えて

0

リソース名は、<Base namespace>.<RelativePathInProject>.<FileName>である必要があります。また、リソースが埋め込まれたリソースにする必要が

だからあなたのリソースは、「リソース/サート/」、およびデフォルトのプロジェクトの名前空間は「MyProject.Test」は、リソース名があるさに配置されている場合:"MyProject.Test.Resources.Certs.Certificate.cert.pfx"

しかし、ファイル名に余分なドットがつくこともあります。 組み込みリソースとしてアセンブリにコンパイルされたリソースを読み込もうとすると、命名規則で余分な「ドット区切り」を使用できないか、コンパイラがファイルをマニフェストに正しく追加しないように見えますGetManifestResourceStreamへのすべての呼び出しはnullを返します。 ご覧のとおり、pathtocertificate.cert.pfxです。ちょうどcertificate.pfxにしてみてください。

+0

コードはローカルマシンで完全に動作します。リソースストリームが検出され、一度ロードされると証明書が動作します。 Azure上でのみ、このコードはエラーを引き起こします。 – Richard

関連する問題