есть консольное приложение c#. при создании объекта программа присваивает значения некоторым переменным из конфигурации.
при сборке c# консольное приложение (не веб-сайты) называет конфигурационный файл applicationName.exe.config . Мой следующий шаг - зашифровать этот файл конфигурации с помощью «RSAProtectedConfigurationProvider».
"RSAProtectedConfigurationProvider" требуется имя конфигурации как web.config, поэтому я переименовал applicationName.exe.config в web.config , выполнил следующие команды в командной строке ( от имени администратора), чтобы зашифровать файл конфигурации.
- Cd C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
- aspnet_regiis -pef "appSettings" "D: \ SecureConnection "-prov" RSAProtectedConfigurationProvider ".
после шифрования, переименован web.config в applicationName.exe.config
сейчас , когда я запускаю приложение на своем локальном компьютере (с шифрованием или без шифрования), программа работает нормально. однако на сервере после шифрования программа просто отключается. программа работает нормально без зашифрованного файла конфигурации.
try catch записывается для регистрации исключений, но код не достигает блока try catch, поскольку при создании объекта программа присваивает переменным значения из конфигурации и сразу же программы выключается.
из средства просмотра событий Я вижу эти исключения. очевидно, есть проблема с шифрованием дешифрования, но я не понимаю, почему он работает локально, а не на сервере. застрял на некоторое время. любая помощь приветствуется.
Версия Framework: v4.0.30319 Описание: Процесс был прерван из-за необработанного исключения. Информация об исключении: System.Configuration.ConfigurationErrorsException в System.Configuration.RsaProtectedConfigurationProvider.ThrowBetterException (Boolean) в System.Configuration.RsaProtectedConfigurationProvider.GetCryptoServiceProvider (Boolean, BooleanProvider.GetCryptoServiceProvider (Boolean, Boolean, Boolean). System.Configuration.ProtectedConfigurationSection.DecryptSection (System.String, System.Configuration.ProtectedConfigurationProvider) в System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.DecConfiguration.Internal.IInternalConfigHost.DecConryptSection (System.String, System.ConfigurationPiguration .ProtectedConfigurationSection) на System.Configuration.Internal.DelegatingConfigHost.DecryptSection (System.String, System.Configuration.ProtectedConfigurationProvider, System.Configuration.ProtectedConfigurationSection) в System.Configuration.BaseConfigurationRecord.CallHostctionDecryptSecryptSecord (. Configuration.ProtectedConfigurationProvider, System.Configuration.ProtectedConfigurationSection) в System.Configuration.RuntimeConfigurationRecord.CallHostDecryptSection (System.String, System.Configuration.ProtectedConfigurationProvider, System.Configuration.ProtectedConfigurationProvider, System.Configuration.ProtectedConfigurationProvider, System. Система. .ProtectedConfigurationProvider)
Информация об исключении: System.Configuration.ConfigurationErrorsException в System.Configuration.BaseConfigurationRecord.EvaluateOne (System.String [], System.Configuration.SectionInput, Boolean, System.Configuration.FactoryConfiguration. System.Configuration.FactoryConfiguration. SectionRecord, System.Object) в System.Configuration.BaseConfigurationRecord.Evaluate (System.Configuration.FactoryRecord, System.Configuration.SectionRecord, System.Object, Boolean, Boolean, System.Object ByRef, System.Object ByRef) в System.Configuration. BaseConfigurationRecord.GetSectionRecursive (System.String, Boolean, Boolean, Boolean, Boolean, System.Object ByRef, System.Object ByRef) в System.Configuration. ByRef, System.Object ByRef) в System. Configuration.BaseConfigurationRecord.GetSectionRecursive (System.String, Boolean, Boolean, Boolean, Boolean, System.Object ByRef, System.Object ByRef) в System.Configuration.BaseConfigurationRecord.GetSection (System.String) в System.Configuration.ClientConfigurationSystem. Configuration.Internal.IInternalConfigSystem.GetSection (System.String) в System.Configuration.ConfigurationManager.get_AppSettings ()
Код выглядит следующим образом:
publi c class Uploadjob {private stati c только для чтения Журнал ILog = LogManager.GetLogger (System.Reflection.MethodBase.GetCurrentMethod (). DeclaringType);
string userName = ConfigurationManager.AppSettings["UserName"];
string password = ConfigurationManager.AppSettings["Password"];
public Uploadjob()
{
log.Info("Upload job started: ");
UploadFile();
}
#region upload file on SFTP Server
public void UploadFile()
{
try
{
//logic
}
catch (Exception ex)
{
LogExceptions(ex);
}
}
}