pulimurukan Ответов: 1

ПОМОГИТЕ МНЕ!! Исключение типа "System.IO.IOException" произошло в mscorlib.dll но не был обработан в пользовательском коде


Привет,я новичок в этой технологии, пожалуйста, помогите me.in мой проект mvc,я разрабатываю проекты веб-API, когда я запускаю программу, я получаю эту ошибку
An exception of type 'System.IO.IOException' occurred in mscorlib.dll but was not handled in user code

Additional information: The device is not ready.



здесь приходит ошибка

public SafeDirectoryCatalog(string directory)
      {
          var files = Directory.EnumerateFiles(directory, "*.dll", SearchOption.AllDirectories);//ERROR HERE

          this.catalog = new AggregateCatalog();

          foreach (var file in files)
          {
              try
              {
                  var asmCat = new AssemblyCatalog(file);

                  ////Force MEF to load the plugin and figure out if there are any exports
                  // good assemblies will not throw the RTLE exception and can be added to the catalog
                  if (asmCat.Parts.ToList().Count > 0)
                  {
                      this.catalog.Catalogs.Add(asmCat);
                  }
              }







Source Error: 


Line 32:         public SafeDirectoryCatalog(string directory)
Line 33:         {
Line 34:             var files = Directory.EnumerateFiles(directory, "*.dll", SearchOption.AllDirectories);
Line 35: 
Line 36:             this.catalog = new AggregateCatalog();

Source File: C:\ProjectVI\Code\BA\ProjectVI.Api\Install\SafeDirectoryCatalog.cs    Line: 34 

Stack Trace: 


[IOException: The device is not ready.
]
   System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +11185413
   System.IO.FileSystemEnumerableIterator`1.CommonInit() +241
   System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost) +445
   System.IO.Directory.EnumerateFiles(String path, String searchPattern, SearchOption searchOption) +96
   ProjectVI.Api.Install.SafeDirectoryCatalog..ctor(String directory) in C:\ProjectVI\Code\BA\ProjectVI.Api\Install\SafeDirectoryCatalog.cs:34
   ProjectVI.Api.Install.MefConfig.Register() in C:\ProjectVI\Code\BA\ProjectVI.Api\Install\MefConfig.cs:28
   ProjectVI.Api.WebApiApplication.Application_Start() in C:\ProjectVI\Code\BA\ProjectVI.Api\Global.asax.cs:30

[HttpException (0x80004005): The device is not ready.
]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9916673
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): The device is not ready.
]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9930568
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

phil.o

В чем заключается ценность directory параметр, когда выбрасывается исключение?

pulimurukan

D:\NGN\MVC\Dev Code\libs\api-получение этого текста

phil.o

И откуда берется эта ценность? Является ли этот путь допустимым на машине выполняется этот код?

pulimurukan

у меня не получилось у.пожалуйста, чек мой обновленный вопрос..как я могу найти значение параметра каталога при возникновении исключения

phil.o

"Устройство не готово" означает путь в системе. directory переменная недоступна на машине, на которой выполняется код.
В открытом тексте "D:\NGN\MVC\Dev путь" Code\libs\api" не является допустимым путем на сервере, на котором выполняется сборка. Это может быть допустимый путь на вашей локальной машине/машине разработки, но это не допустимый путь на сервере.

1 Ответов

Рейтинг:
8

Ebenezar John Paul

Здесь исключения происходят, когда,

* Указанный путь/searchoption не является допустимым.

* Вы пытаетесь получить доступ неуправляемого сетевого расположения.

* У вас нет персимиссии.

Я взял образец с веб-сайта microsoft. Просто вставьте следующий код в свою функцию.


string sourceDirectory = @"C:\current"; // Replace this path with your local folder path.
            
string archiveDirectory = @"C:\archive"; // Replace this path with your local folder path.

           
            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }


Теперь отладьте приложение и посмотрите, что произойдет. Если он работает правильно, то просто перепроверьте свой старый аргумент каталог и дайте правильный путь; тогда вам хорошо идти.

В случае, если вы поймаете ошибку в этих блоках, имейте точку отладки внутри блока catch и посмотрите, какой тип исключения генерируется.
<br />
Path Invalid -> ArgumentException / ArgumentNullException /                                 DirectoryNotFoundException / IOException /  PathTooLongException


Access Denied -> SecurityException / UnauthorizedAccessException

SearchOption Invalid -> ArgumentOutOfRangeException


Пожалуйста, проверьте и исправьте ваши входные данные на основе исключения типов, вызванного. Я надеюсь, что вы сможете изменить свой код на основе этой информации и заставить его работать без проблем.
Пожалуйста, вернитесь, если вам нужна еще какая - то помощь в этом вопросе.


pulimurukan

его очистили, но теперь я получаю исключение типа "система".Отражение.ReflectionTypeLoadException' произошло в ProjectVI.Api.dll но не был обработан в пользовательском коде

Дополнительная информация: невозможно загрузить один или несколько запрошенных типов. Получения свойства LoaderExceptions для получения дополнительной информации.


как я могу это исправить?