Попытка получить список дисков из приложения на стороне сервера с помощью службы WCF, и я продолжаю получать сообщение об ошибке / диски не найдены Вот мой код на стороне сервера. Надеясь, что кто-то может пролить свет на эту бесконечную проблему «доступа» с помощью silverlight!
[OperationContract]
public List<AllDriveInfo> ServerDriveInfo()
{
try
{
DriveInfo[] ComputerDrives = DriveInfo.GetDrives();
//List<DriveInfo> ComputerDrives = DriveInfo.GetDrives();
//string[] ComputerDrives = Environment.GetLogicalDrives();
List<AllDriveInfo> ServerDrives = new List<AllDriveInfo>();
foreach (DriveInfo drive in ComputerDrives)
{
AllDriveInfo NewDrive = new AllDriveInfo();
NewDrive.DriveLetter = drive.VolumeLabel;
NewDrive.VolumeName = drive.Name;
ServerDrives.Add(NewDrive);
}
return ServerDrives;
}
catch (Exception ex)
{
return null;
}
}
Недавно я также попробовал другой подход, используя InteropServices с кодом, указанным ниже. Однако в WCF, похоже, нет пространства имен для объекта AutomationFactory, что обычно является ссылкой:
using System.Runtime.InteropServices.Automation;
[OperationContract]
public List<AllDriveInfo> ServerDriveInfo()
{
dynamic fileSystem = AutomationFactory.CreateObject("Scripting.FileSystemObject");
dynamic drives = fileSystem.Drives;
List<AllDriveInfo> Drives = new List<AllDriveInfo>();
foreach (var drive in drives)
{
try
{
Drives.Add(new AllDriveInfo
{
VolumeName = drive.VolumeName,
DriveLetter = drive.DriveLetter,
});
}
catch (Exception ex) { }
}
return Drives;
}