如果启用了FIPS加密,是否可以解决VSIX安装程序。
错误详情: 应用程序:vsixinstaller.exe
框架版本:v4.0.30319
描述:由于未处理的异常,该进程已终止。
异常信息:System.InvalidOperationException
在System.Security.Cryptography.MD5CryptoServiceProvider..ctor()
异常信息:System.Reflection.TargetInvocationException
at System.RuntimeMethodHandle.InvokeMethod(System.Object,System.Object [],System.Signature,Boolean)
在System.Reflection.RuntimeConstructorInfo.Invoke(System.Reflection.BindingFlags,System.Reflection.Binder,System.Object [],System.Globalization.CultureInfo)
在System.Security.Cryptography.CryptoConfig.CreateFromName(System.String,System.Object [])
在System.Security.Cryptography.MD5.Create()
at Microsoft.VisualStudio.ExtensionManager.Shared.TelemetryLogger.EndBlockingProcessTelemetry(Microsoft.VisualStudio.Telemetry.TelemetryScope 1<Microsoft.VisualStudio.Telemetry.OperationEvent>, Boolean, System.Collections.Generic.IEnumerable
1)
在VSIXInstaller.BlockPage.NavigateToInstall(System.Threading.CancellationToken)
异常信息:System.Reflection.TargetInvocationException
at System.RuntimeMethodHandle.InvokeMethod(System.Object,System.Object [],System.Signature,Boolean)
在System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object,System.Object [],System.Object [])
在System.Delegate.DynamicInvokeImpl(System.Object [])
在System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate,System.Object,Int32)
在System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object,System.Delegate,System.Object,Int32,System.Delegate)
在System.Windows.Threading.DispatcherOperation.InvokeImpl()
在System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object的)
在System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean)
在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean)
在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object)
在MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext,System.Threading.ContextCallback,System.Object)
在System.Windows.Threading.DispatcherOperation.Invoke()
在System.Windows.Threading.Dispatcher.ProcessQueue()
在System.Windows.Threading.Dispatcher.WndProcHook(IntPtr,Int32,IntPtr,IntPtr,Boolean ByRef)
at MS.Win32.HwndWrapper.WndProc(IntPtr,Int32,IntPtr,IntPtr,Boolean ByRef)
在MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
在System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate,System.Object,Int32)
在System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object,System.Delegate,System.Object,Int32,System.Delegate)
在System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority,System.TimeSpan,System.Delegate,System.Object,Int32)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr,Int32,IntPtr,IntPtr)
在MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
在System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
在System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
在System.Windows.Application.RunDispatcher(System.Object的)
在System.Windows.Application.RunInternal(System.Windows.Window)
在System.Windows.Application.Run(System.Windows.Window)
在VSIXInstaller.App.Main()
答案 0 :(得分:0)
好吧,反编译MD5CryptoServiceProvider
构造函数会显示以下内容:
public MD5CryptoServiceProvider() {
if (CryptoConfig.AllowOnlyFipsAlgorithms)
throw new InvalidOperationException(Environment.GetResourceString("Cryptography_NonCompliantFIPSAlgorithm"));
// ...
}
因此,基本上,.NET框架明确地检查FIPS合规性并在启用时抛出异常,这是VSIX安装程序无法处理的。
我建议使用Microsoft Connect打开一个错误(包括堆栈跟踪),因为安装程序应该能够处理此异常并继续安装,无论如何。
通过将VSIX安装程序可执行文件的配置文件修改为forcibly disable FIPS compliance,您可以在本地解决此问题,从而启用安装。