0

ここで説明されているような問題が発生しています。

Import-AzurePublishSettingsFile が CryptographicException をスローする

IIS から Powershell を呼び出して、プログラムで VM をデプロイします。このプロセスの一部には、新しい顧客のために新しいパブリッシュ設定ファイルをロードすることが含まれます。そうしようとすると、次のエラーが発生します。

Import-AzurePublishSettingsFile : An internal error occurred.

At C:\WebApps\Provisioning\PowerShellScripts\vmDeploy.ps1:152 char:2
+     Import-AzurePublishSettingsFile ($outputDir + "\" + $azSettingsFile) 
-ErrorActi ...
+    
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) 
[Import-AzurePublishSettingsFile], CryptographicException
    + FullyQualifiedErrorId : 
Microsoft.WindowsAzure.Commands.Subscription.ImportAzurePublishSettingsCommand

これはユーザー空間と関係があると思います。同じサーバーでインタラクティブな PS セッションからまったく同じスクリプトを実行した場合、問題なく動作します。

これをトラブルシューティングする方法についてのアイデアはありますか?

編集: Powershell からのスタック トレース:

PSMessageDetails      : 
Exception             : System.Security.Cryptography.CryptographicException: An internal error occurred.

                           at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
                           at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
                           at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)
                           at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password)
                           at Microsoft.WindowsAzure.Commands.Utilities.Common.PublishSettingsImporter.PublishSubscriptionToAzureSubscription(PublishDataPublishProfile profile, PublishDataPublishProfileSubscription s) in c:\workspace\workspace\build-azure-sdk-tools-msi\WindowsAzurePowershell\src\Commands.Utilities\Common\PublishSettingsImporter.cs:line 56
                           at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
                           at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
                           at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
                           at Microsoft.WindowsAzure.Commands.Utilities.Common.WindowsAzureProfile.ImportPublishSettings(String fileName) in c:\workspace\workspace\build-azure-sdk-tools-msi\WindowsAzurePowershell\src\Commands.Utilities\Common\WindowsAzureProfile.cs:line 293
                           at Microsoft.WindowsAzure.Commands.Subscription.ImportAzurePublishSettingsCommand.ImportFile(String fileName) in c:\workspace\workspace\build-azure-sdk-tools-msi\WindowsAzurePowershell\src\Commands\Subscription\ImportAzurePublishSettings.cs:line 95
                           at Microsoft.WindowsAzure.Commands.Subscription.ImportAzurePublishSettingsCommand.ExecuteCmdlet() in c:\workspace\workspace\build-azure-sdk-tools-msi\WindowsAzurePowershell\src\Commands\Subscription\ImportAzurePublishSettings.cs:line 46
                           at Microsoft.WindowsAzure.Commands.Utilities.Common.CmdletBase.ProcessRecord() in c:\workspace\workspace\build-azure-sdk-tools-msi\WindowsAzurePowershell\src\Commands.Utilities\Common\CmdletBase.cs:line 96
TargetObject          : 
CategoryInfo          : CloseError: (:) [Import-AzurePublishSettingsFile], 
                        CryptographicException
FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.Subscription.ImportAzurePublishSettingsCommand
ErrorDetails          : 
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at <ScriptBlock>, C:\WebApps\Provisioning\PowerShellScripts\vmDeploy.ps1: line 163
PipelineIterationInfo : {}





MyCommand             : Import-AzurePublishSettingsFile
BoundParameters       : {}
UnboundArguments      : {}
ScriptLineNumber      : 163
OffsetInLine          : 2
HistoryId             : 1
ScriptName            : C:\WebApps\Provisioning\PowerShellScripts\vmDeploy.ps1
Line                  :     Import-AzurePublishSettingsFile ($outputDir + "\" + 
                        $azSettingsFile) -ErrorAction Stop

PositionMessage       : At C:\WebApps\Provisioning\PowerShellScripts\vmDeploy.ps
                        1:163 char:2
                        +     Import-AzurePublishSettingsFile ($outputDir + "\" 
                        + $azSettingsFile) -ErrorActi ...
                        +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PSScriptRoot          : C:\WebApps\Provisioning\PowerShellScripts
PSCommandPath         : C:\WebApps\Provisioning\PowerShellScripts\vmDeploy.ps1
InvocationName        : Import-AzurePublishSettingsFile
PipelineLength        : 0
PipelinePosition      : 0
ExpectingInput        : False
CommandOrigin         : Internal
DisplayScriptPosition : 



00000000000000000000000000000000000000000000000000000000000000000000000000000000


Message        : An internal error occurred.

Data           : {}
InnerException : 
TargetSite     : Void ThrowCryptographicException(Int32)
StackTrace     :    at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
                    at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle&pCertCtx)
                    at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)
                    at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password)
                    at Microsoft.WindowsAzure.Commands.Utilities.Common.PublishSettingsImporter.PublishSubscriptionToAzureSubscription(PublishDataPublishProfile profile, PublishDataPublishProfileSubscription s) in c:\workspace\workspace\build-azure-sdk-tools-msi\WindowsAzurePowershell\src\Commands.Utilities\Common\PublishSettingsImporter.cs:line 56
                    at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
                    at System.Collections.Generic.List`1..ctor(IEnumerable`1collection)
                    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1source)
                    at Microsoft.WindowsAzure.Commands.Utilities.Common.WindowsAzureProfile.ImportPublishSettings(String fileName) in c:\workspace\workspace\build-azure-sdk-tools-msi\WindowsAzurePowershell\src\Commands.Utilities\Common\WindowsAzureProfile.cs:line 293
                    at Microsoft.WindowsAzure.Commands.Subscription.ImportAzurePublishSettingsCommand.ImportFile(String fileName) in c:\workspace\workspace\build-azure-sdk-tools-msi\WindowsAzurePowershell\src\Commands\Subscription\ImportAzurePublishSettings.cs:line 95
                    at Microsoft.WindowsAzure.Commands.Subscription.ImportAzurePublishSettingsCommand.ExecuteCmdlet() in c:\workspace\workspace\build-azure-sdk-tools-msi\WindowsAzurePowershell\src\Commands\Subscription\ImportAzurePublishSettings.cs:line 46
                    at Microsoft.WindowsAzure.Commands.Utilities.Common.CmdletBase.ProcessRecord() in c:\workspace\workspace\build-azure-sdk-tools-msi\WindowsAzurePowershell\src\Commands.Utilities\Common\CmdletBase.cs:line 96
HelpLink       : 
Source         : mscorlib
HResult        : -2146893792
4

3 に答える 3

0

答え:

IIS アプリ プールのユーザー コンテキストをローカル管理者に変更したことで、問題が解決しました。これは、問題が以前のコンテキストからの暗号ストアへのアクセスであったことを示唆しています。ただし、エラーとスタック トレースはあいまいすぎて、この仮説を確認できません。

于 2014-01-24T17:59:29.450 に答える