Chúng tôi có phương thức truy cập vào mạng chia sẻ. Phương thức này hoạt động tốt khi được gọi trực tiếp, nhưng chúng ta có được một System.IO.IOException khi nó được gọi thông qua reflecton. Dường như ngữ cảnh của người dùng không có sẵn cho mã được phản ánh (xem dấu vết ngăn xếp bên dưới). Có cách nào để ngăn chặn điều này?Truy cập mạng chia sẻ trong các cuộc gọi phương thức phản chiếu
System.Reflection.TargetInvocationException: Exception has been thrown by
the target of an invocation. ---> System.IO.IOException: Logon failure:
unknown user name or bad password.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.InternalGetFileDirectoryNames(String path,
String userPathOriginal, String searchPattern, Boolean includeFiles,
Boolean includeDirs, SearchOption searchOption)
at System.IO.Directory.GetDirectories(String path, String searchPattern,
SearchOption searchOption)
làm việc này
Library.Class obj =new Library.Class();
obj.Execute(serverPath);
này không làm việc
Assembly assembly = Assembly.LoadFile(@"pathTo\Library.dll");
Type type = assembly.GetType("Library.Class");
MethodInfo executeMethod = type.GetMethod("Execute");
object classInstance = Activator.CreateInstance(type, null);
object[] parameterArray = new object[] { serverPath};
executeMethod.Invoke(classInstance, parameterArray);
đâu Library.Class.execute được định nghĩa là
public void Execute(string serverPath){
string[] directories = Directory.GetDirectories(serverPath,
"1.*", SearchOption.TopDirectoryOnly);
foreach (var directory in directories) {
Console.WriteLine(directory);
}
}
và serverPath
là một mạng chia sẻ rằng requi đỏ người dùng nhập thông tin đăng nhập.
----- Cập nhật 1 -------
Điều này dường như hơi môi trường - Tôi có ít nhất một máy tính thử nghiệm, nơi mọi thứ hoạt động. Tôi sẽ thực hiện một số thử nghiệm khác để xác định sự khác biệt quan trọng.
'LoadFrom' (thay vì' LoadFile') có hoạt động khác không? –
http://msdn.microsoft.com/en-us/library/b61s44e8.aspx 'LoadFile không tải tệp vào ngữ cảnh LoadFrom và không giải quyết các phụ thuộc bằng cách sử dụng đường dẫn tải, vì phương thức LoadFrom không' –
Đó là thông tin hữu ích, nhưng tôi không nghĩ rằng vấn đề phải làm với 'LoadFrom' vs' LoadFile' vì trong mã thực tế, Library.dll nằm trong cùng thư mục với ứng dụng thực thi. Ngoài ra, vấn đề đã dừng lại một cách bí ẩn ngày hôm nay. –